diff --git a/src/Control/Concurrent/Timer/Types.hs b/src/Control/Concurrent/Timer/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/Control/Concurrent/Timer/Types.hs
@@ -0,0 +1,18 @@
+module Control.Concurrent.Timer.Types
+( Timer(..)
+) where
+
+------------------------------------------------------------------------------
+import           Control.Concurrent         (ThreadId)
+import           Control.Concurrent.MVar    (MVar)
+import           Control.Concurrent.Suspend (Delay)
+------------------------------------------------------------------------------
+
+------------------------------------------------------------------------------
+-- | The data type representing the timer.
+-- For now, the action and delay are fixed for the lifetime of the Timer.
+data Timer m = Timer
+    { timerAction   :: m ()
+    , timerDelay    :: Delay
+    , timerThreadID :: MVar (Maybe ThreadId)
+    }
diff --git a/timers.cabal b/timers.cabal
--- a/timers.cabal
+++ b/timers.cabal
@@ -1,5 +1,5 @@
 name:                timers
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Simple package that implements timers.
 description:         Simple package that implements timers. Both "one-shot" and "repeating" timers are implemented.
 license:             BSD3
@@ -20,6 +20,9 @@
     exposed-modules:
         Control.Concurrent.Timer
       , Control.Concurrent.Timer.Lifted
+
+    other-modules:
+        Control.Concurrent.Timer.Types
 
     build-depends:
         base              == 4.5.*
