diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.3.1.2
+=======
+* Add some missing test files
+
 0.3.1.1
 =======
 * Fix some example code that wasn't building
diff --git a/katip.cabal b/katip.cabal
--- a/katip.cabal
+++ b/katip.cabal
@@ -1,5 +1,5 @@
 name:                katip
-version:             0.3.1.1
+version:             0.3.1.2
 synopsis:            A structured logging framework.
 description:
   Katip is a structured logging framework. See README.md for more details.
@@ -23,6 +23,8 @@
   test/Main.hs
   test/Katip/Tests.hs
   test/Katip/Tests/Scribes/Handle.hs
+  test/Katip/Tests/Scribes/Handle-text.golden
+  test/Katip/Tests/Format/Time.hs
 tested-with: GHC == 7.8.4, GHC== 7.10.3
 
 source-repository head
@@ -86,6 +88,10 @@
   type: exitcode-stdio-1.0
   main-is: Main.hs
   hs-source-dirs: test
+  other-modules:
+    Katip.Tests.Format.Time
+    Katip.Tests.Scribes.Handle
+    Katip.Tests
   default-language:    Haskell2010
   build-depends: base
                , katip
@@ -100,11 +106,14 @@
                , text
                , time
                , time-locale-compat >= 0.1.0.1 && < 0.2
-               , temporary
                , directory
                , regex-tdfa
                , unordered-containers
                , microlens
+  ghc-options: -Wall
+  if flag(lib-Werror)
+    ghc-options: -Werror
+
 
 benchmark bench
   type: exitcode-stdio-1.0
diff --git a/test/Katip/Tests.hs b/test/Katip/Tests.hs
--- a/test/Katip/Tests.hs
+++ b/test/Katip/Tests.hs
@@ -11,7 +11,7 @@
 
 
 -------------------------------------------------------------------------------
-import           Control.Applicative
+import           Control.Applicative as A
 import           Data.Aeson
 import qualified Data.HashMap.Strict       as HM
 import           Data.Monoid
@@ -93,7 +93,7 @@
 -------------------------------------------------------------------------------
 instance Arbitrary a => Arbitrary (Item a) where
     arbitrary = Item
-      <$> arbitrary
+      A.<$> arbitrary
       <*> arbitrary
       <*> arbitrary
       <*> arbitrary
diff --git a/test/Katip/Tests/Format/Time.hs b/test/Katip/Tests/Format/Time.hs
new file mode 100644
--- /dev/null
+++ b/test/Katip/Tests/Format/Time.hs
@@ -0,0 +1,81 @@
+module Katip.Tests.Format.Time
+    ( tests
+    ) where
+
+-------------------------------------------------------------------------------
+import           Data.Aeson              (toJSON)
+import qualified Data.Text               as Text
+import           Data.Time
+import           Data.Time.Clock.POSIX
+import qualified Data.Time.Locale.Compat as LC
+import           Test.Tasty
+import           Test.Tasty.HUnit
+import           Test.Tasty.QuickCheck
+-------------------------------------------------------------------------------
+import           Katip.Format.Time
+-------------------------------------------------------------------------------
+
+
+tests :: TestTree
+tests = testGroup "Katip.Format.Time"
+  [ testCase "formatAsLogTime" $ do
+      assertEqual "time 1" (formatDT t1) (formatAsLogTime t1)
+      assertEqual "time 2" (formatDT t2) (formatAsLogTime t2)
+      assertEqual "time 3" (formatDT t3) (formatAsLogTime t3)
+      assertEqual "time 4" (formatDT t4) (formatAsLogTime t4)
+      assertEqual "time 5" (formatDT t5) (formatAsLogTime t5)
+
+  , testCase "formatAsIso8601" $ do
+      assertEqual "time 1" (formatDTISO t1) (formatAsIso8601 t1)
+      assertEqual "time 2" (formatDTISO t2) (formatAsIso8601 t2)
+      assertEqual "time 3" (formatDTISO t3) (formatAsIso8601 t3)
+      assertEqual "time 4" (formatDTISO t4) (formatAsIso8601 t4)
+      assertEqual "time 5" (formatDTISO t5) (formatAsIso8601 t5)
+
+  , testCase "formatAsIso8601 Aeson" $ do
+      assertEqual "time 1" (toJSON t1) (toJSON $ formatAsIso8601 t1)
+      assertEqual "time 2" (toJSON t2) (toJSON $ formatAsIso8601 t2)
+      assertEqual "time 3" (toJSON t3) (toJSON $ formatAsIso8601 t3)
+      assertEqual "time 4" (toJSON t4) (toJSON $ formatAsIso8601 t4)
+      assertEqual "time 5" (toJSON t5) (toJSON $ formatAsIso8601 t5)
+
+
+  , testProperty "LogTime same as Date.Time" $ \(ArbUTCTime t) ->
+      prop_format_log t
+
+  , testProperty "ISO 8601 same as Date.Time" $ \(ArbUTCTime t) ->
+      prop_format_iso t
+
+  , testProperty "ISO 8601 same as Aeson" $ \(ArbUTCTime t) ->
+      prop_format_aeson t
+
+  ]
+  where
+    t1 = UTCTime (fromGregorian 2016 12 34) 5025.123456789012
+    t2 = UTCTime (fromGregorian 2016 1 23) 5025.123
+    t3 = UTCTime (fromGregorian 16 12 1) 025
+    t4 = UTCTime (fromGregorian 2000 1 1) 0.000000000001
+    t5 = UTCTime (fromGregorian 2000 12 31) 0.100000000001
+
+formatDT :: UTCTime -> Text.Text
+formatDT = Text.pack . formatTime LC.defaultTimeLocale "%0Y-%m-%d %H:%M:%S"
+
+formatDTISO :: UTCTime -> Text.Text
+formatDTISO = Text.pack . formatTime LC.defaultTimeLocale "%0Y-%m-%dT%H:%M:%S%QZ"
+
+prop_format_log :: UTCTime -> Property
+prop_format_log a = formatDT a === formatAsLogTime a
+
+prop_format_iso :: UTCTime -> Property
+prop_format_iso a = formatDTISO a === formatAsIso8601 a
+
+prop_format_aeson :: UTCTime -> Property
+prop_format_aeson a = toJSON a === toJSON (formatAsIso8601 a)
+
+
+newtype ArbUTCTime = ArbUTCTime UTCTime
+                   deriving (Show)
+
+instance Arbitrary ArbUTCTime where
+    arbitrary = fmap (ArbUTCTime . posixSecondsToUTCTime . fromInteger)
+                     arbitrary
diff --git a/test/Katip/Tests/Scribes/Handle-text.golden b/test/Katip/Tests/Scribes/Handle-text.golden
new file mode 100644
--- /dev/null
+++ b/test/Katip/Tests/Scribes/Handle-text.golden
@@ -0,0 +1,40 @@
+[2016-06-12 12:34:56][foo][Debug][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Notice][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Warning][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Error][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Critical][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Alert][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Emergency][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][0][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][2147483647][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][www.example.com][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][127.0.0.1][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][0][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][1][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][1337][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][2147483647][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note] message
+with newline
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note]  a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message a really long message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note] сообщение
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note] 哈囉世界
+[2000-01-01 00:00:00][foo][Info][example][7331][1337][note.deep:some note] message
+[2123-12-31 23:59:59][foo][Info][example][7331][1337][note.deep:some note] message
+[2016-10-10 01:01:05][foo][Info][example][7331][1337][note.deep:some note] message
+[2100-12-31 12:59:10][foo][Info][example][7331][1337][note.deep:some note] message
+[1982-01-01 12:30:00][foo][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo.bar][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][фу.бар][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][with
+newline][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note][main:Some.Module path/Some/Module.hs:30:1] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][note.deep:some note][main:Some.Module путь/Some/Module.hs:3000:9000] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][sub:null][text:][num:0.0][float:0.0] message
+[2016-06-12 12:34:56][foo][Info][example][7331][1337][sub.note.deep:some note][text:note][num:10.0][float:5.5] message
diff --git a/test/Katip/Tests/Scribes/Handle.hs b/test/Katip/Tests/Scribes/Handle.hs
--- a/test/Katip/Tests/Scribes/Handle.hs
+++ b/test/Katip/Tests/Scribes/Handle.hs
@@ -18,7 +18,6 @@
 import           Lens.Micro                 ((.~))
 import           System.Directory
 import           System.IO
-import           System.IO.Temp
 import           Test.Tasty
 import           Test.Tasty.Golden
 import           Test.Tasty.HUnit
@@ -40,10 +39,10 @@
        let pat = "\\[[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}\\]\\[katip-test.test\\]\\[Info\\]\\[.+\\]\\[[[:digit:]]+\\]\\[ThreadId [[:digit:]]+\\]\\[note.deep:some note\\] test message" :: String
        let matches = res =~ pat
        assertBool (res <> " did not match") matches
-  , withResource setupTempFile teardownTempFile $ \setup ->
+  , withResource setupTempFile teardownTempFile $ \setupFn ->
        goldenVsString "Text-golden"
                       "test/Katip/Tests/Scribes/Handle-text.golden"
-                      (setup >>= writeTextLog)
+                      (setupFn >>= writeTextLog)
   ]
 
 
@@ -54,8 +53,8 @@
 
 
 instance ToJSON DummyLogItem where
-  toJSON (DummyLogItem n) = object
-    [ "note" .= object [ "deep" .= n
+  toJSON dli = object
+    [ "note" .= object [ "deep" .= dliNote dli
                        ]
     ]
 
@@ -143,7 +142,7 @@
           | s <- [minBound .. maxBound]
     ]
   , [ itemThread .~ (ThreadIdText . T.pack $ show t) $ theItem
-          | t <- [0, 1, 1337, 2147483647]
+          | t <- [0 :: Int, 1, 1337, 2147483647]
     ]
   , [ itemHost .~ h $ theItem
           | h <- ["example", "www.example.com", "127.0.0.1"]
