diff --git a/JsonGrammar.cabal b/JsonGrammar.cabal
--- a/JsonGrammar.cabal
+++ b/JsonGrammar.cabal
@@ -1,5 +1,5 @@
 Name:           JsonGrammar
-Version:        0.2
+Version:        0.3
 Synopsis:       Combinators for bidirectional JSON parsing
 Description:   	Combinators for bidirectional JSON parsing
 
@@ -31,7 +31,10 @@
                     semigroups >= 0.5 && < 0.6,
                     template-haskell >= 2.4 && < 2.6,
                     -- constraints copied from aeson-0.3.2.5:
+                    attoparsec >= 0.8.5.3,
+                    bytestring,
                     text >= 0.11.0.2,
+                    time,
                     vector >= 0.7
 
 Source-Repository head
diff --git a/Language/JsonGrammar.hs b/Language/JsonGrammar.hs
--- a/Language/JsonGrammar.hs
+++ b/Language/JsonGrammar.hs
@@ -14,24 +14,31 @@
   
   ) where
 
-import Data.Iso hiding (option)
-
 import Prelude hiding (id, (.), head, maybe, either)
 
-import Control.Category
-import Control.Monad
-
 import Data.Aeson hiding (object)
 import Data.Aeson.Types (parseMaybe)
+import Data.Attoparsec.Number
+import Data.ByteString (ByteString)
+import qualified Data.ByteString.Lazy as Lazy
+import Data.Int
+import Data.IntSet
+import Data.Iso hiding (option)
 import qualified Data.Map as M
 import Data.Maybe (fromMaybe)
 import Data.String
 import Data.Text (Text)
+import qualified Data.Text.Lazy as Lazy
+import Data.Time.Clock
 import qualified Data.Vector as V
 import qualified Data.Vector.Generic as VG
 import qualified Data.Vector.Fusion.Stream as VS
+import Data.Word
 
+import Control.Category
+import Control.Monad
 
+
 aeObject :: Iso (Object :- t) (Value :- t)
 aeArray  :: Iso (Array  :- t) (Value :- t)
 aeNull   :: Iso            t  (Value :- t)
@@ -148,32 +155,39 @@
 instance Json a => Json [a] where
   grammar = list grammar
 
-instance Json Bool where
-  grammar = liftAeson
-
-instance Json Int where
-  grammar = liftAeson
-
-instance Json Integer where
-  grammar = liftAeson
-
-instance Json Float where
-  grammar = liftAeson
-
-instance Json Double where
-  grammar = liftAeson
-
-instance Json [Char] where
-  grammar = liftAeson
-
 instance Json a => Json (Maybe a) where
   grammar = option grammar
 
 instance (Json a, Json b) => Json (Either a b) where
   grammar = either grammar grammar
 
-instance Json Value where
-  grammar = id
+
+instance Json Bool            where grammar = liftAeson
+instance Json Char            where grammar = liftAeson
+instance Json Double          where grammar = liftAeson
+instance Json Float           where grammar = liftAeson
+instance Json Int             where grammar = liftAeson
+instance Json Int8            where grammar = liftAeson
+instance Json Int16           where grammar = liftAeson
+instance Json Int32           where grammar = liftAeson
+instance Json Int64           where grammar = liftAeson
+instance Json Integer         where grammar = liftAeson
+instance Json Word            where grammar = liftAeson
+instance Json Word8           where grammar = liftAeson
+instance Json Word16          where grammar = liftAeson
+instance Json Word32          where grammar = liftAeson
+instance Json Word64          where grammar = liftAeson
+instance Json ()              where grammar = liftAeson
+instance Json ByteString      where grammar = liftAeson
+instance Json Lazy.ByteString where grammar = liftAeson
+instance Json Number          where grammar = liftAeson
+instance Json Text            where grammar = liftAeson
+instance Json Lazy.Text       where grammar = liftAeson
+instance Json IntSet          where grammar = liftAeson
+instance Json UTCTime         where grammar = liftAeson
+instance Json DotNetTime      where grammar = liftAeson
+instance Json Value           where grammar = id
+instance Json [Char]          where grammar = liftAeson
 
 unsafeToJson :: Json a => String -> a -> Value
 unsafeToJson context value =
