diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@
                postHash = "c46b717604ef8b126dabeba97b27a36f",
                postTime = 2014 - 5 - 19 3 : 35 : 55 UTC, 
                postShared = True,
-               postToread = False,
+               postToRead = False,
                postTags = ["spj", "video", "haskell", "typetheory"]}]}
 ```
 ## Modules
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+__v0.9.2__
+
+Make data fields strict
+
 __v0.9.1__
 
 rename field: postToread -> postToRead
diff --git a/pinboard.cabal b/pinboard.cabal
--- a/pinboard.cabal
+++ b/pinboard.cabal
@@ -1,5 +1,5 @@
 name:                pinboard
-version:             0.9.1
+version:             0.9.2
 synopsis:            Access to the Pinboard API
 license:             MIT
 license-file:        LICENSE
@@ -52,6 +52,9 @@
                        Pinboard.Types
                        Pinboard.Util
   ghc-options:         -Wall -rtsopts
+                       -fwarn-incomplete-patterns
+                       -funbox-strict-fields
+                       -fexpose-all-unfoldings
 
 source-repository head
   type:     git
diff --git a/src/Pinboard/ApiTypes.hs b/src/Pinboard/ApiTypes.hs
--- a/src/Pinboard/ApiTypes.hs
+++ b/src/Pinboard/ApiTypes.hs
@@ -21,8 +21,6 @@
 import Data.Time           (UTCTime)
 import Data.Time.Calendar  (Day)
 
--- import Language.Haskell.Exts.Parser
--- import Language.Haskell.Exts.Pretty
 import qualified Data.HashMap.Strict as HM
 import qualified Data.Vector as V
 
@@ -40,8 +38,8 @@
 -- * Posts
 
 data Posts = Posts {
-      postsDate         :: UTCTime
-    , postsUser         :: Text
+      postsDate         :: !UTCTime
+    , postsUser         :: !Text
     , postsPosts        :: [Post]
     } deriving (Show, Eq, Data, Typeable, Ord)
 
@@ -59,14 +57,14 @@
     , "posts" .= toJSON postsPosts ]
 
 data Post = Post {
-      postHref         :: Text
-    , postDescription  :: Text
-    , postExtended     :: Text
-    , postMeta         :: Text
-    , postHash         :: Text
-    , postTime         :: UTCTime
-    , postShared       :: Bool
-    , postToRead       :: Bool
+      postHref         :: !Text
+    , postDescription  :: !Text
+    , postExtended     :: !Text
+    , postMeta         :: !Text
+    , postHash         :: !Text
+    , postTime         :: !UTCTime
+    , postShared       :: !Bool
+    , postToRead       :: !Bool
     , postTags         :: [Tag]
     } deriving (Show, Eq, Data, Typeable, Ord)
 
@@ -104,9 +102,9 @@
 boolToYesNo _    = "no"
 
 data PostDates = PostDates {
-      postDatesUser     :: Text
-    , postDatesTag      :: Text
-    , postDatesCount    :: [DateCount]
+      postDatesUser     :: !Text
+    , postDatesTag      :: !Text
+    , postDatesCount    :: [(Day, Int)]
     } deriving (Show, Eq, Data, Typeable, Ord)
 
 instance FromJSON PostDates where
@@ -135,7 +133,7 @@
 -- * Notes
 
 data NoteList = NoteList {
-      noteListCount     :: Int
+      noteListCount     :: !Int
     , noteListItems     :: [NoteListItem]
     } deriving (Show, Eq, Data, Typeable, Ord)
 
@@ -151,12 +149,12 @@
     , "notes" .= toJSON noteListItems ]
 
 data NoteListItem = NoteListItem {
-      noteListItemId     :: Text
-    , noteListItemHash   :: Text
-    , noteListItemTitle  :: Text
-    , noteListItemLength :: Int
-    , noteListItemCreatedAt :: UTCTime
-    , noteListItemUpdatedAt :: UTCTime
+      noteListItemId     :: !Text
+    , noteListItemHash   :: !Text
+    , noteListItemTitle  :: !Text
+    , noteListItemLength :: !Int
+    , noteListItemCreatedAt :: !UTCTime
+    , noteListItemUpdatedAt :: !UTCTime
     } deriving (Show, Eq, Data, Typeable, Ord)
 
 instance FromJSON NoteListItem where
@@ -180,13 +178,13 @@
 
 
 data Note = Note {
-      noteId     :: Text
-    , noteHash   :: Text
-    , noteTitle  :: Text
-    , noteText   :: Text
-    , noteLength :: Int
-    , noteCreatedAt :: UTCTime
-    , noteUpdatedAt :: UTCTime
+      noteId     :: !Text
+    , noteHash   :: !Text
+    , noteTitle  :: !Text
+    , noteText   :: !Text
+    , noteLength :: !Int
+    , noteCreatedAt :: !UTCTime
+    , noteUpdatedAt :: !UTCTime
     } deriving (Show, Eq, Data, Typeable, Ord)
 
 instance FromJSON Note where
diff --git a/src/Pinboard/Client.hs b/src/Pinboard/Client.hs
--- a/src/Pinboard/Client.hs
+++ b/src/Pinboard/Client.hs
@@ -81,7 +81,7 @@
 
 -- | Create a default PinboardConfig using the supplied apiToken
 fromApiToken :: String -> PinboardConfig
-fromApiToken token = PinboardConfig { debug = False, apiToken = pack token }
+fromApiToken token = PinboardConfig { apiToken = pack token }
 
 --------------------------------------------------------------------------------
 -- | Execute computations in the Pinboard monad
@@ -155,7 +155,7 @@
 buildReq url = do
   req <- liftIO $ parseUrl $ "https://api.pinboard.in/v1/" <> url
   return $ req 
-    { requestHeaders = [("User-Agent","pinboard.hs/0.9.1")]
+    { requestHeaders = [("User-Agent","pinboard.hs/0.9.2")]
     , checkStatus = \_ _ _ -> Nothing
     }
 
diff --git a/src/Pinboard/Error.hs b/src/Pinboard/Error.hs
--- a/src/Pinboard/Error.hs
+++ b/src/Pinboard/Error.hs
@@ -46,7 +46,7 @@
 ------------------------------------------------------------------------------
 data PinboardError = PinboardError {
       errorType  :: PinboardErrorType
-    , errorMsg   :: Text
+    , errorMsg   :: !Text
     , errorCode  :: Maybe PinboardErrorCode
     , errorParam :: Maybe Text
     , errorHTTP  :: Maybe PinboardErrorHTTPCode
diff --git a/src/Pinboard/Types.hs b/src/Pinboard/Types.hs
--- a/src/Pinboard/Types.hs
+++ b/src/Pinboard/Types.hs
@@ -64,14 +64,13 @@
 ------------------------------------------------------------------------------
 
 data PinboardRequest = PinboardRequest
-    { requestPath    :: Text   -- ^ url path of PinboardRequest
+    { requestPath    :: !Text   -- ^ url path of PinboardRequest
     , requestParams :: [Param] -- ^ Query Parameters of PinboardRequest
     } deriving Show
 
 ------------------------------------------------------------------------------
 data PinboardConfig = PinboardConfig
-    { apiToken :: ByteString
-    , debug :: Bool
+    { apiToken :: !ByteString
     } deriving Show
 
 ------------------------------------------------------------------------------
@@ -83,24 +82,24 @@
 data ResultFormatType = FormatJson | FormatXml
       deriving (Show, Eq)
 
-data Param = Format ResultFormatType
-           | Tag Text
-           | Tags Text
-           | Old Text
-           | New Text
-           | Count Int
-           | Start Int
-           | Results Int
-           | Url Text
-           | Date Day
-           | DateTime UTCTime
-           | FromDateTime UTCTime
-           | ToDateTime UTCTime
-           | Replace Bool
-           | Shared Bool
-           | ToRead Bool
-           | Description Text
-           | Extended Text
-           | Meta Int
+data Param = Format !ResultFormatType
+           | Tag !Text
+           | Tags !Text
+           | Old !Text
+           | New !Text
+           | Count !Int
+           | Start !Int
+           | Results !Int
+           | Url !Text
+           | Date !Day
+           | DateTime !UTCTime
+           | FromDateTime !UTCTime
+           | ToDateTime !UTCTime
+           | Replace !Bool
+           | Shared !Bool
+           | ToRead !Bool
+           | Description !Text
+           | Extended !Text
+           | Meta !Int
       deriving (Show, Eq)
 
diff --git a/src/Pinboard/Util.hs b/src/Pinboard/Util.hs
--- a/src/Pinboard/Util.hs
+++ b/src/Pinboard/Util.hs
@@ -32,7 +32,7 @@
 ------------------------------------------------------------------------------
 
 mkConfig :: PinboardConfig
-mkConfig = PinboardConfig { debug = False, apiToken = mempty }
+mkConfig = PinboardConfig { apiToken = mempty }
 
 ------------------------------------------------------------------------------
 -- | Conversion from a `Show` constrained type to `Text`
