diff --git a/reddit.cabal b/reddit.cabal
--- a/reddit.cabal
+++ b/reddit.cabal
@@ -1,5 +1,5 @@
 name:                reddit
-version:             0.2.0.0
+version:             0.2.1.0
 synopsis:            Library for interfacing with Reddit's API
 description:
   A library for interfacing with Reddit's API in Haskell. Handles
@@ -65,6 +65,7 @@
     Reddit.Types.User
     Reddit.Types.Wiki
   other-modules:
+    Paths_reddit
     Reddit.Parser
     Reddit.Routes
     Reddit.Routes.Captcha
@@ -90,20 +91,20 @@
   default-language: Haskell2010
   hs-source-dirs: src/
   build-depends:
-    base >= 4.6 && < 4.9,
-    aeson >= 0.9 && < 0.10,
-    api-builder >= 0.10 && < 0.12,
+    base >= 4.6 && < 4.10,
+    aeson >= 0.9 && < 0.12,
+    api-builder >= 0.10 && < 0.13,
     bytestring == 0.10.*,
-    data-default-class == 0.0.1,
+    data-default-class >= 0.0.1 && < 0.2,
     free >= 4 && < 5,
-    http-client >= 0.4.11 && < 0.4.21,
-    http-client-tls >= 0.2 && < 0.2.3,
-    http-types == 0.8.*,
+    http-client >= 0.4.30 && < 0.6,
+    http-client-tls >= 0.2 && < 0.4,
+    http-types >= 0.8 && < 0.10,
     network == 2.6.*,
     text == 1.*,
-    time == 1.5.*,
-    transformers == 0.4.*,
-    unordered-containers == 0.2.5.*,
+    time >= 1.5 && < 1.7,
+    transformers >= 0.4 && < 0.6,
+    unordered-containers >= 0.2.5 && < 0.3,
     vector >= 0.10 && < 0.12
   ghc-options: -Wall
 
diff --git a/src/Reddit.hs b/src/Reddit.hs
--- a/src/Reddit.hs
+++ b/src/Reddit.hs
@@ -32,13 +32,24 @@
 import Control.Monad.Trans.Free
 import Data.ByteString.Char8 (ByteString)
 import Data.Default.Class
+import Data.Maybe (fromMaybe, isNothing)
+import Data.Monoid
 import Data.Text (Text)
 import Data.Text.Encoding (encodeUtf8)
+import Data.Version
 import Network.API.Builder as API
 import Network.HTTP.Client
 import Network.HTTP.Client.TLS
 import Network.HTTP.Types
+import qualified Data.ByteString.Char8 as BS
 
+import qualified Paths_reddit
+
+versionString :: ByteString
+versionString =
+  case Paths_reddit.version of
+    Version xs _ -> BS.intercalate "." $ map (BS.pack . show) xs
+
 -- | Options for how we should run the 'Reddit' action.
 --
 -- - 'rateLimitingEnabled': 'True' if the connection should be automatically rate-limited
@@ -99,7 +110,8 @@
 --   most things, but it's handy if you want to persist a connection over multiple 'Reddit' sessions or
 --   use a custom user agent string.
 runResumeRedditWith :: MonadIO m => RedditOptions -> RedditT m a -> m (Either (APIError RedditError, Maybe (RedditT m a)) a)
-runResumeRedditWith (RedditOptions rl man lm _ua) reddit = do
+runResumeRedditWith (RedditOptions rl man lm ua) reddit = do
+  when (isNothing ua) customUAWarning
   manager <- case man of
     Just m -> return m
     Nothing -> liftIO $ newManager tlsManagerSettings
@@ -111,7 +123,7 @@
     Left (err, _) -> return $ Left (err, Just reddit)
     Right lds ->
       interpretIO
-        (RedditState mainBaseURL rl manager [("User-Agent", "reddit-haskell dev version")] lds) reddit
+        (RedditState mainBaseURL rl manager [("User-Agent", fromMaybe ("reddit-haskell " <> versionString) ua)] lds) reddit
 
 interpretIO :: MonadIO m => RedditState -> RedditT m a -> m (Either (APIError RedditError, Maybe (RedditT m a)) a)
 interpretIO rstate (RedditT r) =
@@ -168,3 +180,8 @@
               , connMgr :: Manager
               , _extraHeaders :: [Header]
               , _creds :: Maybe LoginDetails }
+
+customUAWarning :: MonadIO m => m ()
+customUAWarning = liftIO $ do
+  putStrLn "WARNING: You haven't specified a custom Reddit user agent!"
+  putStrLn "           This is against Reddit's terms of service, and you should probably fix it."
diff --git a/src/Reddit/Actions/Moderation.hs b/src/Reddit/Actions/Moderation.hs
--- a/src/Reddit/Actions/Moderation.hs
+++ b/src/Reddit/Actions/Moderation.hs
@@ -3,6 +3,7 @@
 import Reddit.Routes.Moderation
 import Reddit.Types.Error
 import Reddit.Types.Listing
+import Reddit.Types.Message
 import Reddit.Types.Moderation
 import Reddit.Types.Options
 import Reddit.Types.Reddit
@@ -27,3 +28,9 @@
         [b] -> return $ Just b
         [] -> return Nothing
         _-> failWith (APIError InvalidResponseError)
+
+getModmail :: Monad m => RedditT m (Listing MessageID Message)
+getModmail = runRoute $ modmail $ Options Nothing Nothing
+
+getModmail' :: Monad m => Options MessageID -> RedditT m (Listing MessageID Message)
+getModmail' = runRoute . modmail
diff --git a/src/Reddit/Actions/Search.hs b/src/Reddit/Actions/Search.hs
--- a/src/Reddit/Actions/Search.hs
+++ b/src/Reddit/Actions/Search.hs
@@ -11,12 +11,12 @@
 
 search :: Monad m => Maybe SubredditName -> Options PostID -> Search.Order -> Text -> RedditT m PostListing
 search sub opts order query =
-  runRoute $ searchRoute sub opts order "plain" query
+  runRoute $ searchRoute sub opts order Nothing query
 
 luceneSearch :: Monad m => Maybe SubredditName -> Options PostID -> Search.Order -> Text -> RedditT m PostListing
 luceneSearch sub opts order query =
-  runRoute $ searchRoute sub opts order "lucene" query
+  runRoute $ searchRoute sub opts order (Just "lucene") query
 
 cloudSearch :: Monad m => Maybe SubredditName -> Options PostID -> Search.Order -> Text -> RedditT m PostListing
 cloudSearch sub opts order query =
-  runRoute $ searchRoute sub opts order "cloudsearch" query
+  runRoute $ searchRoute sub opts order (Just "cloudsearch") query
diff --git a/src/Reddit/Routes/Moderation.hs b/src/Reddit/Routes/Moderation.hs
--- a/src/Reddit/Routes/Moderation.hs
+++ b/src/Reddit/Routes/Moderation.hs
@@ -1,5 +1,6 @@
 module Reddit.Routes.Moderation where
 
+import Reddit.Types.Message
 import Reddit.Types.Moderation
 import Reddit.Types.Options
 import Reddit.Types.Subreddit
@@ -19,4 +20,12 @@
 banLookup (Username u) (R sub) =
   Route [ "r", sub, "about", "banned" ]
         [ "user" =. u ]
+        "GET"
+
+modmail :: Options MessageID -> Route
+modmail opts =
+  Route [ "message", "moderator" ]
+        [ "before" =. before opts
+        , "after" =. after opts
+        , "limit" =. limit opts ]
         "GET"
diff --git a/src/Reddit/Routes/Search.hs b/src/Reddit/Routes/Search.hs
--- a/src/Reddit/Routes/Search.hs
+++ b/src/Reddit/Routes/Search.hs
@@ -9,7 +9,7 @@
 import Data.Text (Text)
 import Network.API.Builder.Routes
 
-searchRoute :: Maybe SubredditName -> Options PostID -> Search.Order -> Text -> Text -> Route
+searchRoute :: Maybe SubredditName -> Options PostID -> Search.Order -> Maybe Text -> Text -> Route
 searchRoute r opts sorder engine q =
   Route (path r)
         [ "after" =. after opts
@@ -17,6 +17,7 @@
         , "restrict_sr" =. isJust r
         , "sort" =. sorder
         , "syntax" =. engine
+        , "limit" =. limit opts
         , "q" =. Just q ]
         "GET"
   where
diff --git a/src/Reddit/Types/Post.hs b/src/Reddit/Types/Post.hs
--- a/src/Reddit/Types/Post.hs
+++ b/src/Reddit/Types/Post.hs
@@ -37,6 +37,7 @@
                  , score :: Integer
                  , created :: UTCTime
                  , content :: PostContent
+                 , commentCount :: Integer
                  , liked :: Maybe Bool
                  , flairText :: Maybe Text
                  , flairClass :: Maybe Text
@@ -58,6 +59,7 @@
          <*> d .: "score"
          <*> (posixSecondsToUTCTime . fromInteger <$> d .: "created_utc")
          <*> (buildContent <$> d .: "is_self" <*> d .:? "selftext" <*> d .:? "selftext_html" <*> d .: "url")
+         <*> d .: "num_comments"
          <*> d .:? "likes"
          <*> d .:? "link_flair_text"
          <*> d .:? "link_flair_css_class"
diff --git a/src/Reddit/Types/Reddit.hs b/src/Reddit/Types/Reddit.hs
--- a/src/Reddit/Types/Reddit.hs
+++ b/src/Reddit/Types/Reddit.hs
@@ -14,10 +14,8 @@
   , RateLimits(RateLimits, should, info)
   , RateLimitInfo(..)
   , headersToRateLimitInfo
-  , builder
   , mainBaseURL
   , loginBaseURL
-  , addHeader
   , addAPIType ) where
 
 import Reddit.Types.Error
@@ -122,18 +120,6 @@
         rlResetTime' = fmap (\s -> addUTCTime (fromIntegral s) now) rlResetTime
         extract s = lookup s hs >>= readMaybe . BS.unpack
         trimap f (a, b, c) = (f a, f b, f c)
-
-builder :: Builder
-builder = Builder "Reddit"
-                  mainBaseURL
-                  addAPIType
-                  (addHeader Nothing)
-
-addHeader :: Maybe BS.ByteString -> Request -> Request
-addHeader Nothing req = req { requestHeaders =
-  ("User-Agent", "reddit-haskell 0.1.0.0 / intolerable") : requestHeaders req }
-addHeader (Just hdr) req = req { requestHeaders =
-  ("User-Agent", hdr) : requestHeaders req }
 
 addAPIType :: Route -> Route
 addAPIType (Route fs ps m) = Route fs ("api_type" =. ("json" :: Text) : ps) m
diff --git a/src/Reddit/Types/SubredditSettings.hs b/src/Reddit/Types/SubredditSettings.hs
--- a/src/Reddit/Types/SubredditSettings.hs
+++ b/src/Reddit/Types/SubredditSettings.hs
@@ -23,8 +23,8 @@
                                            , hideScoreMins :: Integer
                                            , submitLinkLabel :: Maybe Text
                                            , submitTextLabel :: Maybe Text
-                                           , domainCSS :: Bool
-                                           , domainSidebar :: Bool
+                                           , domainCSS :: Maybe Bool
+                                           , domainSidebar :: Maybe Bool
                                            , showMedia :: Bool
                                            , over18 :: Bool
                                            , language :: Text
@@ -49,8 +49,8 @@
                       <*> d .: "comment_score_hide_mins"
                       <*> d .: "submit_link_label"
                       <*> d .: "submit_text_label"
-                      <*> d .: "domain_css"
-                      <*> d .: "domain_sidebar"
+                      <*> d .:? "domain_css"
+                      <*> d .:? "domain_sidebar"
                       <*> d .: "show_media"
                       <*> d .: "over_18"
                       <*> d .: "language"
