+-- | The 'Monoid' instance for 'Usernames' uses an
+-- 'Monoid' instance for lists.
+--
+instance Monoid Usernames where
+ -- | The \"empty\" 'Usernames' simply wraps an empty list.
+ mempty = Usernames []
+
+ -- | This mappend is a little funny; it always chooses the second
+ -- list if that list is nonempty. Otherwise, it chooses the
+ -- first. This is actually associative!
+ u1 `mappend` u2
+ | null (get_usernames u2) = u1
+ | otherwise = u2
+