diff --git a/eternity-timestamped.cabal b/eternity-timestamped.cabal
--- a/eternity-timestamped.cabal
+++ b/eternity-timestamped.cabal
@@ -1,7 +1,7 @@
 name:
   eternity-timestamped
 version:
-  0.1
+  0.2
 synopsis:
   Automatic timestamping for Eternity
 category:
@@ -39,13 +39,14 @@
   default-language:
     Haskell2010
   exposed-modules:
-    Eternity.Timestamped.Conversion
     Eternity.Timestamped.Data
     Eternity.Timestamped.Foldl
     Eternity.Timestamped.Potoki.Consume
     Eternity.Timestamped.Potoki.Produce
     Eternity.Timestamped.Potoki.Transform
   other-modules:
+    Eternity.Timestamped.Data.Conversion
+    Eternity.Timestamped.Data.TypesAndInstances
     Eternity.Timestamped.Prelude
   build-depends:
     attoparsec >=0.13 && <0.14,
diff --git a/library/Eternity/Timestamped/Conversion.hs b/library/Eternity/Timestamped/Conversion.hs
deleted file mode 100644
--- a/library/Eternity/Timestamped/Conversion.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-module Eternity.Timestamped.Conversion
-where
-
-import Eternity.Timestamped.Prelude
-import Eternity.Timestamped.Data
-
-
-timestampMicroSecondsInt64 :: Timestamp -> Int64
-timestampMicroSecondsInt64 (Timestamp prim) = prim
-  
-timestampNominalDiffTime :: Timestamp -> NominalDiffTime
-timestampNominalDiffTime =
-  unsafeCoerce . (* 1000000) . toInteger . timestampMicroSecondsInt64
-
-timestampPosixTime :: Timestamp -> POSIXTime
-timestampPosixTime = timestampNominalDiffTime
-
-timestampUtcTime :: Timestamp -> UTCTime
-timestampUtcTime = posixSecondsToUTCTime . timestampPosixTime
-
-utcTimeTimestamp :: UTCTime -> Timestamp
-utcTimeTimestamp =
-  posixTimeTimestamp . utcTimeToPOSIXSeconds
-
-posixTimeTimestamp :: POSIXTime -> Timestamp
-posixTimeTimestamp =
-  Timestamp . fromIntegral . flip div 1000000 . (unsafeCoerce :: NominalDiffTime -> Integer)
diff --git a/library/Eternity/Timestamped/Data.hs b/library/Eternity/Timestamped/Data.hs
--- a/library/Eternity/Timestamped/Data.hs
+++ b/library/Eternity/Timestamped/Data.hs
@@ -1,44 +1,11 @@
 module Eternity.Timestamped.Data
+(
+  -- * Types
+  module Eternity.Timestamped.Data.TypesAndInstances,
+  -- * Conversion utilities
+  module Eternity.Timestamped.Data.Conversion,
+)
 where
 
-import Eternity.Timestamped.Prelude
-import qualified Generic.Random as A
-
-
--- * Types
--------------------------
-
-{-|
-A value paired with a timestamp. 
--}
-data Timestamped event = Timestamped {-# UNPACK #-} !Timestamp !event
-
-{-|
-Amount of microseconds since @1970-01-01 00:00.000000 UTC@.
-The semantics are the same as of 'Data.Time.Clock.POSIX.POSIXTime'.
-
-This datatype is used instead of 'UTCTime' for space-efficiency.
--}
-newtype Timestamp = Timestamp Int64
-
-
--- * Instances
--------------------------
-
-deriving instance Eq a => Eq (Timestamped a)
-deriving instance Ord a => Ord (Timestamped a)
-deriving instance Show a => Show (Timestamped a)
-deriving instance Functor Timestamped
-deriving instance Generic (Timestamped a)
-instance Arbitrary a => Arbitrary (Timestamped a) where arbitrary = A.genericArbitraryU
-instance Hashable a => Hashable (Timestamped a)
-instance Serialize a => Serialize (Timestamped a)
-
-deriving instance Eq Timestamp
-deriving instance Ord Timestamp
-deriving instance Show Timestamp
-deriving instance Generic Timestamp
-instance Arbitrary Timestamp where arbitrary = A.genericArbitraryU
-instance Hashable Timestamp
-instance Serialize Timestamp
-
+import Eternity.Timestamped.Data.TypesAndInstances
+import Eternity.Timestamped.Data.Conversion
diff --git a/library/Eternity/Timestamped/Data/Conversion.hs b/library/Eternity/Timestamped/Data/Conversion.hs
new file mode 100644
--- /dev/null
+++ b/library/Eternity/Timestamped/Data/Conversion.hs
@@ -0,0 +1,27 @@
+module Eternity.Timestamped.Data.Conversion
+where
+
+import Eternity.Timestamped.Prelude
+import Eternity.Timestamped.Data.TypesAndInstances
+
+
+timestampMicroSecondsInt64 :: Timestamp -> Int64
+timestampMicroSecondsInt64 (Timestamp prim) = prim
+  
+timestampNominalDiffTime :: Timestamp -> NominalDiffTime
+timestampNominalDiffTime =
+  unsafeCoerce . (* 1000000) . toInteger . timestampMicroSecondsInt64
+
+timestampPosixTime :: Timestamp -> POSIXTime
+timestampPosixTime = timestampNominalDiffTime
+
+timestampUtcTime :: Timestamp -> UTCTime
+timestampUtcTime = posixSecondsToUTCTime . timestampPosixTime
+
+utcTimeTimestamp :: UTCTime -> Timestamp
+utcTimeTimestamp =
+  posixTimeTimestamp . utcTimeToPOSIXSeconds
+
+posixTimeTimestamp :: POSIXTime -> Timestamp
+posixTimeTimestamp =
+  Timestamp . fromIntegral . flip div 1000000 . (unsafeCoerce :: NominalDiffTime -> Integer)
diff --git a/library/Eternity/Timestamped/Data/TypesAndInstances.hs b/library/Eternity/Timestamped/Data/TypesAndInstances.hs
new file mode 100644
--- /dev/null
+++ b/library/Eternity/Timestamped/Data/TypesAndInstances.hs
@@ -0,0 +1,38 @@
+module Eternity.Timestamped.Data.TypesAndInstances
+where
+
+import Eternity.Timestamped.Prelude
+import qualified Generic.Random as A
+
+
+{-|
+A value paired with a timestamp. 
+-}
+data Timestamped event = Timestamped {-# UNPACK #-} !Timestamp !event
+
+{-|
+Amount of microseconds since @1970-01-01 00:00.000000 UTC@.
+The semantics are the same as of 'Data.Time.Clock.POSIX.POSIXTime'.
+
+This datatype is used instead of 'UTCTime' for space-efficiency.
+-}
+newtype Timestamp = Timestamp Int64
+
+
+deriving instance Eq a => Eq (Timestamped a)
+deriving instance Ord a => Ord (Timestamped a)
+deriving instance Show a => Show (Timestamped a)
+deriving instance Functor Timestamped
+deriving instance Generic (Timestamped a)
+instance Arbitrary a => Arbitrary (Timestamped a) where arbitrary = A.genericArbitraryU
+instance Hashable a => Hashable (Timestamped a)
+instance Serialize a => Serialize (Timestamped a)
+
+deriving instance Eq Timestamp
+deriving instance Ord Timestamp
+deriving instance Show Timestamp
+deriving instance Generic Timestamp
+instance Arbitrary Timestamp where arbitrary = A.genericArbitraryU
+instance Hashable Timestamp
+instance Serialize Timestamp
+
diff --git a/library/Eternity/Timestamped/Foldl.hs b/library/Eternity/Timestamped/Foldl.hs
--- a/library/Eternity/Timestamped/Foldl.hs
+++ b/library/Eternity/Timestamped/Foldl.hs
@@ -7,7 +7,6 @@
 import Eternity.Timestamped.Prelude hiding (maximum)
 import Eternity.Timestamped.Data
 import Control.Foldl
-import qualified Eternity.Timestamped.Conversion as A
 
 
 untimestamped :: Fold input output -> Fold (Timestamped input) output
@@ -16,7 +15,7 @@
 
 filteringByUtcTime :: (UTCTime -> Bool) -> Fold (Timestamped input) output -> Fold (Timestamped input) output
 filteringByUtcTime filter =
-  filteringByTimestamp (filter . A.timestampUtcTime)
+  filteringByTimestamp (filter . timestampUtcTime)
 
 filteringByTimestamp :: (Timestamp -> Bool) -> Fold (Timestamped input) output -> Fold (Timestamped input) output
 filteringByTimestamp filter =
@@ -24,7 +23,7 @@
 
 inUtcTimeRange :: UTCTime -> UTCTime -> Fold (Timestamped input) output -> Fold (Timestamped input) output
 inUtcTimeRange start end =
-  inTimestampRange (A.utcTimeTimestamp start) (A.utcTimeTimestamp end)
+  inTimestampRange (utcTimeTimestamp start) (utcTimeTimestamp end)
 
 inTimestampRange :: Timestamp -> Timestamp -> Fold (Timestamped input) output -> Fold (Timestamped input) output
 inTimestampRange start end =
diff --git a/library/Eternity/Timestamped/Potoki/Transform.hs b/library/Eternity/Timestamped/Potoki/Transform.hs
--- a/library/Eternity/Timestamped/Potoki/Transform.hs
+++ b/library/Eternity/Timestamped/Potoki/Transform.hs
@@ -3,7 +3,6 @@
 
 import Eternity.Timestamped.Prelude
 import Eternity.Timestamped.Data
-import Eternity.Timestamped.Conversion
 import Potoki.Transform
 
 
