diff --git a/slack-api.cabal b/slack-api.cabal
--- a/slack-api.cabal
+++ b/slack-api.cabal
@@ -1,5 +1,5 @@
 Name:                slack-api
-Version:             0.3
+Version:             0.4
 Synopsis:            Bindings to the Slack RTM API.
 Description:         This library provides bindings to the <https://api.slack.com/rtm Slack Real Time Messaging API>.
                      Users should find it easy to program their own Slack bots using the functionality found in `Web.Slack`.
@@ -78,15 +78,16 @@
     io-streams >= 1.2,
     mtl >= 2.1,
     aeson >= 0.8 ,
-    time >= 1.4.2 && < 1.5,
+    time-locale-compat >= 0.1 && < 0.2,
     errors >= 1.4,
     monad-loops >= 0.4,
-    transformers >= 0.3
+    transformers >= 0.3,
+    time >= 1.4
 
 Test-Suite tests
     Type: exitcode-stdio-1.0
     Main-Is: tests-main.hs
-    ghc-options:   -threaded
+    ghc-options:   -Wall
     HS-Source-Dirs: tests .
     Build-Depends: slack-api, base
     Other-Modules: Tests.ConnectionTest
diff --git a/src/Web/Slack/Message.hs b/src/Web/Slack/Message.hs
--- a/src/Web/Slack/Message.hs
+++ b/src/Web/Slack/Message.hs
@@ -15,6 +15,8 @@
 import           Web.Slack.Types
 import           Data.Time.Clock.POSIX
 
+import Prelude
+
 data MessagePayload = MessagePayload
                     { messageId      :: Int
                     , messageType    :: T.Text
diff --git a/src/Web/Slack/State.hs b/src/Web/Slack/State.hs
--- a/src/Web/Slack/State.hs
+++ b/src/Web/Slack/State.hs
@@ -16,6 +16,7 @@
 import qualified Network.WebSockets        as WS
 import           Web.Slack.Types
 import           Web.Slack.Config
+import Prelude
 
 newtype Slack s a = Slack {runSlack :: S.StateT (SlackState s) IO a}
   deriving (Monad, Functor, Applicative, S.MonadState (SlackState s), MonadIO)
diff --git a/src/Web/Slack/Types/Bot.hs b/src/Web/Slack/Types/Bot.hs
--- a/src/Web/Slack/Types/Bot.hs
+++ b/src/Web/Slack/Types/Bot.hs
@@ -9,17 +9,17 @@
 
 import Web.Slack.Types.Id
 import Web.Slack.Types.Base
-
+import Prelude
 
 data Bot = Bot
          { _botId    :: BotId
          , _botName  :: Text
-         , _botIcons :: BotIcons
+         , _botIcons :: Maybe BotIcons
          } deriving (Show)
 
 
 data BotIcons = BotIcons
-            { _botIconImage48 :: URL
+            { _botIconImage48 :: Maybe URL
             } deriving (Show)
 
 makeLenses ''Bot
@@ -28,8 +28,8 @@
 
 instance FromJSON BotIcons where
   parseJSON = withObject "icons" (\v ->
-                BotIcons <$> v .: "image_48")
+                BotIcons <$> v .:? "image_48")
 
 instance FromJSON Bot where
   parseJSON = withObject "bot" (\v ->
-                Bot <$> v .: "id" <*> v .: "name" <*> v .: "icons")
+                Bot <$> v .: "id" <*> v .: "name" <*> v .:? "icons")
diff --git a/src/Web/Slack/Types/Channel.hs b/src/Web/Slack/Types/Channel.hs
--- a/src/Web/Slack/Types/Channel.hs
+++ b/src/Web/Slack/Types/Channel.hs
@@ -11,6 +11,7 @@
 import Web.Slack.Types.Time
 import Web.Slack.Types.Topic
 import {-# SOURCE #-} Web.Slack.Types.ChannelOpt (ChannelOpt)
+import Prelude
 
 data Channel = Channel { _channelId         :: ChannelId
                        , _channelName       :: Text
diff --git a/src/Web/Slack/Types/ChannelOpt.hs b/src/Web/Slack/Types/ChannelOpt.hs
--- a/src/Web/Slack/Types/ChannelOpt.hs
+++ b/src/Web/Slack/Types/ChannelOpt.hs
@@ -8,6 +8,8 @@
 import Web.Slack.Types.Time
 
 
+import Prelude
+
 data ChannelOpt = ChannelOpt
                 { _channelOptLastRead    :: SlackTimeStamp
                 , _channelOptUnreadCount :: Int
diff --git a/src/Web/Slack/Types/Comment.hs b/src/Web/Slack/Types/Comment.hs
--- a/src/Web/Slack/Types/Comment.hs
+++ b/src/Web/Slack/Types/Comment.hs
@@ -8,6 +8,7 @@
 
 import Web.Slack.Types.Id
 import Web.Slack.Types.Time
+import Prelude
 
 data Comment = Comment
              { _commentId        :: CommentId
diff --git a/src/Web/Slack/Types/Event.hs b/src/Web/Slack/Types/Event.hs
--- a/src/Web/Slack/Types/Event.hs
+++ b/src/Web/Slack/Types/Event.hs
@@ -25,6 +25,7 @@
 import Data.Text (Text)
 import qualified Data.Text as T
 import Data.Monoid
+import Prelude
 
 type Domain = Text
 
diff --git a/src/Web/Slack/Types/File.hs b/src/Web/Slack/Types/File.hs
--- a/src/Web/Slack/Types/File.hs
+++ b/src/Web/Slack/Types/File.hs
@@ -14,6 +14,8 @@
 import Web.Slack.Types.Time
 import Web.Slack.Types.Base
 
+import Prelude
+
 data File = File { _fileId             :: FileId
                  , _fileTimestamp      :: Time
                  , _fileName           :: Maybe Text
diff --git a/src/Web/Slack/Types/Group.hs b/src/Web/Slack/Types/Group.hs
--- a/src/Web/Slack/Types/Group.hs
+++ b/src/Web/Slack/Types/Group.hs
@@ -12,6 +12,7 @@
 import Control.Applicative
 
 import Data.Text (Text)
+import Prelude
 
 data Group = Group
            { _groupId         :: GroupId
diff --git a/src/Web/Slack/Types/IM.hs b/src/Web/Slack/Types/IM.hs
--- a/src/Web/Slack/Types/IM.hs
+++ b/src/Web/Slack/Types/IM.hs
@@ -10,6 +10,8 @@
 import Web.Slack.Types.Time
 import {-# SOURCE #-} Web.Slack.Types.ChannelOpt (ChannelOpt)
 
+import Prelude
+
 data IM = IM
         { _imId      :: IMId
         , _imUser    :: UserId
diff --git a/src/Web/Slack/Types/Id.hs b/src/Web/Slack/Types/Id.hs
--- a/src/Web/Slack/Types/Id.hs
+++ b/src/Web/Slack/Types/Id.hs
@@ -27,13 +27,13 @@
 instance FromJSON (Id a) where
   parseJSON = withText "Id" (return . Id)
 
-type UserId    = Id TUser
-type BotId     = Id TBot
-type ChannelId = Id TChannel
-type FileId    = Id TFile
-type CommentId = Id TComment
-type GroupId   = Id TGroup
-type IMId      = Id TIM
-type TeamId    = Id TTeam
+type UserId    = Id 'TUser
+type BotId     = Id 'TBot
+type ChannelId = Id 'TChannel
+type FileId    = Id 'TFile
+type CommentId = Id 'TComment
+type GroupId   = Id 'TGroup
+type IMId      = Id 'TIM
+type TeamId    = Id 'TTeam
 
 makeLenses ''Id
diff --git a/src/Web/Slack/Types/Item.hs b/src/Web/Slack/Types/Item.hs
--- a/src/Web/Slack/Types/Item.hs
+++ b/src/Web/Slack/Types/Item.hs
@@ -11,6 +11,7 @@
 import Web.Slack.Types.Base
 
 import Control.Lens.TH
+import Prelude
 
 data Item = MessageItem ChannelId MessageUpdate
           | FileItem File
diff --git a/src/Web/Slack/Types/Preferences.hs b/src/Web/Slack/Types/Preferences.hs
--- a/src/Web/Slack/Types/Preferences.hs
+++ b/src/Web/Slack/Types/Preferences.hs
@@ -63,8 +63,6 @@
                  , _prefCollapsible                     :: Bool
                  , _prefCollapsibleByClick              :: Bool
                  , _prefRequireAt                       :: Bool
-                 , _prefMacSsbBullet                    :: Bool
-                 , _prefWinSsbBullet                    :: Bool
                  , _prefExpandNonMediaAttachments       :: Bool
                  , _prefShowTyping                      :: Bool
                  , _prefPagekeysHandled                 :: Bool
@@ -93,7 +91,6 @@
                  , _prefFullTextExtracts                :: Bool
                  , _prefNoTextInNotifications           :: Bool
                  , _prefMutedChannels                   :: Text
-                 , _prefNoMacssb1Banner                 :: Bool
                  , _prefPrivacyPolicySeen               :: Bool
                  , _prefSearchExcludeBots               :: Bool
                  , _prefFuzzyMatching                   :: Bool
@@ -102,7 +99,6 @@
 
 $(deriveJSON defaultOptions {fieldLabelModifier = \case
                                                     "_prefTime24" -> "time24"
-                                                    "_prefNoMacssb1Banner" -> "no_macssb1_banner"
                                                     s -> toSnake . drop (length "_pref") $ s} ''Preferences)
 
 -- Bad performance regression from lens 4.6 causes GHC to run out of memory
diff --git a/src/Web/Slack/Types/Presence.hs b/src/Web/Slack/Types/Presence.hs
--- a/src/Web/Slack/Types/Presence.hs
+++ b/src/Web/Slack/Types/Presence.hs
@@ -4,6 +4,7 @@
 import Data.Aeson
 import Control.Applicative
 import qualified Data.Text as T
+import Prelude
 
 data Presence = Away | Active deriving Show
 
diff --git a/src/Web/Slack/Types/Self.hs b/src/Web/Slack/Types/Self.hs
--- a/src/Web/Slack/Types/Self.hs
+++ b/src/Web/Slack/Types/Self.hs
@@ -11,6 +11,8 @@
 import Control.Applicative
 import Control.Lens.TH
 
+import Prelude
+
 data Self = Self
           { _selfUserId         :: UserId
           , _selfName           :: Text
diff --git a/src/Web/Slack/Types/Session.hs b/src/Web/Slack/Types/Session.hs
--- a/src/Web/Slack/Types/Session.hs
+++ b/src/Web/Slack/Types/Session.hs
@@ -14,6 +14,7 @@
 import Web.Slack.Types.Bot
 import Data.Text (Text)
 import Control.Lens.TH
+import Prelude
 
 data SlackSession = SlackSession
                 { _slackSelf          :: Self
diff --git a/src/Web/Slack/Types/Team.hs b/src/Web/Slack/Types/Team.hs
--- a/src/Web/Slack/Types/Team.hs
+++ b/src/Web/Slack/Types/Team.hs
@@ -9,6 +9,7 @@
 import Control.Lens.TH
 import Data.Aeson
 import Control.Applicative
+import Prelude
 
 data Team = Team
           { _teamId                :: TeamId
diff --git a/src/Web/Slack/Types/Topic.hs b/src/Web/Slack/Types/Topic.hs
--- a/src/Web/Slack/Types/Topic.hs
+++ b/src/Web/Slack/Types/Topic.hs
@@ -5,6 +5,7 @@
 import Data.Text (Text)
 import Control.Applicative
 import Control.Lens.TH
+import Prelude
 
 type Purpose = Topic
 
diff --git a/src/Web/Slack/Types/User.hs b/src/Web/Slack/Types/User.hs
--- a/src/Web/Slack/Types/User.hs
+++ b/src/Web/Slack/Types/User.hs
@@ -11,7 +11,9 @@
 import Web.Slack.Types.Id
 import Web.Slack.Types.Base
 
+import Prelude
 
+
 data User = User
           { _userId         :: UserId
           , _userName       :: Text
@@ -78,6 +80,7 @@
 makeLenses ''Profile
 makeLenses ''Permissions
 makeLenses ''Timezone
+makeLenses ''User
 
 instance FromJSON Profile where
   parseJSON = withObject "Profile"
diff --git a/tests/Tests/ConnectionTest.hs b/tests/Tests/ConnectionTest.hs
--- a/tests/Tests/ConnectionTest.hs
+++ b/tests/Tests/ConnectionTest.hs
@@ -1,10 +1,7 @@
 module Tests.ConnectionTest (main) where
 
 import Web.Slack
-import Web.Slack.Message
 import System.Environment (lookupEnv)
-import Data.Maybe (fromMaybe)
-import Control.Applicative
 import System.Exit
 import System.IO.Unsafe
 
@@ -17,11 +14,13 @@
 connectBot Hello = unsafePerformIO exitSuccess
 connectBot _ = return ()
 
+
 main :: IO ()
 main = do
-  apiToken <- fromMaybe (unsafePerformIO exitFailure)
-               <$> lookupEnv "SLACK_API_TOKEN"
-  runBot (myConfig apiToken) connectBot ()
+  apiToken <- lookupEnv "SLACK_API_TOKEN"
+  case apiToken of
+    Nothing -> exitFailure
+    Just token ->  runBot (myConfig token) connectBot ()
 
 
 
