diff --git a/DEBT b/DEBT
--- a/DEBT
+++ b/DEBT
@@ -10,3 +10,4 @@
    and I'm repeating the same where functions in many different
    functions (which is bad!).
 3. [ ] Hackage docs! I haven't written anything. Naughty me.
+4. [ ] Make Data polymorphic over the value type for any Num (how?).
diff --git a/src/Database/Tempodb/Methods/Read.hs b/src/Database/Tempodb/Methods/Read.hs
--- a/src/Database/Tempodb/Methods/Read.hs
+++ b/src/Database/Tempodb/Methods/Read.hs
@@ -10,13 +10,14 @@
 import           Data.Aeson             as A
 import           Data.ByteString.Char8  as C8
 import           Data.ByteString.Lazy   (fromStrict)
+import           Data.Int
 import           Data.Monoid
 import           Database.Tempodb.Types
 import           Database.Tempodb.Util
 import           Network.HTTP.Base      (urlEncodeVars)
 import           Network.Http.Client
 
-readOne :: IdOrKey -> Maybe QueryArgs -> Tempodb (Maybe SeriesData)
+readOne :: IdOrKey -> Maybe QueryArgs -> Tempodb (Maybe (SeriesData Int64))
 readOne q qa = do
     auth <- ask
     req  <- liftIO . buildRequest $ do
@@ -36,7 +37,7 @@
         Nothing  -> mempty
         Just qry -> "?" <> (C8.pack $ urlEncodeVars qry)
 
-readMulti :: Maybe QueryArgs -> Tempodb (Maybe [SeriesData])
+readMulti :: Maybe QueryArgs -> Tempodb (Maybe [SeriesData Int64])
 readMulti q = do
     auth <- ask
     req  <- liftIO . buildRequest $ do
diff --git a/src/Database/Tempodb/Methods/Write.hs b/src/Database/Tempodb/Methods/Write.hs
--- a/src/Database/Tempodb/Methods/Write.hs
+++ b/src/Database/Tempodb/Methods/Write.hs
@@ -11,12 +11,13 @@
 import           Data.Aeson             as A
 import           Data.ByteString.Char8  as C8
 import           Data.ByteString.Lazy   (fromStrict, toStrict)
+import           Data.Int
 import           Data.Monoid
 import           Database.Tempodb.Types as T
 import           Database.Tempodb.Util
 import           Network.Http.Client
 
-writeOne :: IdOrKey -> Data -> Tempodb Bool
+writeOne :: IdOrKey -> Data Int64 -> Tempodb Bool
 writeOne q d = do
     let postdata = toStrict $ A.encode d
     auth <- ask
@@ -34,7 +35,7 @@
     ident (T.SeriesKey k) = "/key/" <> k
     path = rootpath <> "/series" <> (ident q)
 
-writeBulk :: Bulk -> Tempodb Bool
+writeBulk :: Bulk Int64 -> Tempodb Bool
 writeBulk d = do
     let postData = toStrict $ A.encode d
     auth <- ask
@@ -47,7 +48,7 @@
 
     return True
 
-writeMulti :: [Data] -> T.Tempodb (Either (Maybe [Data]) Bool)
+writeMulti :: [Data Int64] -> T.Tempodb (Either (Maybe [Data Int64]) Bool)
 writeMulti d = do
     let postData = toStrict $ A.encode d
     auth <- ask
diff --git a/src/Database/Tempodb/Types.hs b/src/Database/Tempodb/Types.hs
--- a/src/Database/Tempodb/Types.hs
+++ b/src/Database/Tempodb/Types.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE DeriveDataTypeable         #-}
+{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE OverloadedStrings          #-}
 
@@ -11,6 +12,7 @@
 import           Data.Aeson.Types
 import qualified Data.ByteString       as B
 import           Data.ByteString.Char8 as C8
+import           Data.Int
 import           Data.Map              (Map)
 import qualified Data.Text             as T
 import           Data.Text.Encoding    (decodeUtf8, encodeUtf8)
@@ -82,15 +84,15 @@
     parseJSON = withText "ByteString" $ pure . encodeUtf8
     {-# INLINE parseJSON #-}
 
-data Data = Data
+data Num a => Data a = Data
     { uid       :: Maybe IdOrKey
     , timestamp :: Maybe TempoDBTime
-    , value     :: Double
+    , value     :: a
     } deriving (Show, Eq, Ord)
 
-data Bulk = Bulk
+data Bulk a = Bulk
     { timestmp   :: TempoDBTime
-    , bulkValues :: [Data]
+    , bulkValues :: [Data a]
     } deriving (Show, Eq, Ord)
 
 data Rollup = Rollup
@@ -109,16 +111,16 @@
     , count  :: Int
     } deriving (Show, Eq, Ord)
 
-data SeriesData = SeriesData
+data SeriesData a = SeriesData
     { series  :: Series
     , start   :: TempoDBTime
     , end     :: TempoDBTime
-    , values  :: [Data]
+    , values  :: [Data a]
     , rollup  :: Maybe Rollup
     , summary :: Summary
     } deriving (Show, Eq, Ord)
 
-instance FromJSON SeriesData where
+instance FromJSON (SeriesData Int64) where
     parseJSON (Object o) = SeriesData    <$>
                            o .: "series" <*>
                            o .: "start"  <*>
@@ -129,13 +131,13 @@
 
     parseJSON _ = mzero
 
-instance FromJSON Bulk where
+instance FromJSON (Bulk Int64) where
     parseJSON (Object o) = Bulk     <$>
                            o .: "t" <*>
                            o .: "data"
     parseJSON _ = mzero
 
-instance ToJSON Bulk where
+instance ToJSON (Bulk Int64) where
     toJSON (Bulk t v) = object
         [ "t"    .= t
         , "data" .= v
@@ -173,10 +175,10 @@
                   Nothing -> mzero
     parseJSON _          = mzero
 
-instance FromJSON Data where
+instance FromJSON (Data Int64) where
     parseJSON = parseSeriesData
 
-parseSeriesData :: Value -> Parser Data
+parseSeriesData :: Value -> Parser (Data Int64)
 parseSeriesData v = do
     case v of
         Object o -> do
@@ -194,10 +196,10 @@
         Nothing    -> return Nothing
         Just idkey -> return . Just $ SeriesKey idkey
 
-instance ToJSON Data where
+instance ToJSON (Data Int64) where
     toJSON = buildSeriesData
 
-buildSeriesData :: Data -> Value
+buildSeriesData :: (Data Int64) -> Value
 buildSeriesData (Data i t v) = object . ts . eid $ ["v" .= v]
   where
     ts l = case t of
diff --git a/tempodb.cabal b/tempodb.cabal
--- a/tempodb.cabal
+++ b/tempodb.cabal
@@ -1,5 +1,5 @@
 name:                tempodb
-version:             0.2.2.2
+version:             0.2.2.3
 synopsis:            A small Haskell wrapper around the TempoDB api.
 
 description:         TempoDB is a time-series database as-a-service with a
@@ -35,7 +35,7 @@
     HTTP                      >= 4000.2.9 && < 4000.2.12,
     HsOpenSSL                 >= 0.10.4   && < 0.11,
     bytestring                >= 0.9.1    && < 0.11,
-    aeson                     >= 0.7.0.1  && < 0.7.0.2,
+    aeson                     >= 0.7.0.1  && < 0.7.1,
     io-streams                >= 1.1.2.0  && < 1.2,
     blaze-builder             >= 0.3.3.0  && < 0.4,
     containers                >= 0.5.5.0  && < 0.6,
