diff --git a/data-extra.cabal b/data-extra.cabal
--- a/data-extra.cabal
+++ b/data-extra.cabal
@@ -1,5 +1,5 @@
 name:                data-extra
-version:             2.0.0
+version:             2.1.0
 synopsis:            Extra utilities for working on Data.* types.
 description:         Extra utilities for working on Data.* types.
 license:             BSD3
diff --git a/src/Data/Maybe/Extra.hs b/src/Data/Maybe/Extra.hs
--- a/src/Data/Maybe/Extra.hs
+++ b/src/Data/Maybe/Extra.hs
@@ -13,3 +13,8 @@
 whenJust :: Monad m => Maybe a -> (a -> m c) -> m ()
 whenJust (Just a) m = m a >> return ()
 whenJust _         _ = return ()
+
+-- | Return the sole element of the list or nothing.
+sole :: [a] -> Maybe a
+sole [x] = Just x
+sole _   = Nothing
diff --git a/src/Data/Text/Extra.hs b/src/Data/Text/Extra.hs
--- a/src/Data/Text/Extra.hs
+++ b/src/Data/Text/Extra.hs
@@ -23,6 +23,7 @@
   toText = pack
   toLazyText = L.pack
 
+-- | A class for converting from Text.
 class FromText a where
   fromText :: Text -> Maybe a
   fromLazyText :: L.Text -> Maybe a
diff --git a/src/Data/Time/Extra.hs b/src/Data/Time/Extra.hs
--- a/src/Data/Time/Extra.hs
+++ b/src/Data/Time/Extra.hs
@@ -65,6 +65,7 @@
   end <- liftIO $ getCurrentTime
   return (a,end `diffUTCTime` start)
 
+-- | Trivial benchmark for some monadic action.
 bench :: MonadIO m => Integer -> m a -> m (a,NominalDiffTime)
 bench i computation = go i Nothing where
   go n Nothing = do
