diff --git a/gnss-converters.cabal b/gnss-converters.cabal
--- a/gnss-converters.cabal
+++ b/gnss-converters.cabal
@@ -1,5 +1,5 @@
 name:                  gnss-converters
-version:               0.3.14
+version:               0.3.15
 synopsis:              GNSS Converters.
 description:           Haskell bindings for GNSS converters.
 homepage:              http://github.com/swift-nav/gnss-converters
diff --git a/main/RTCM32RTCM3.hs b/main/RTCM32RTCM3.hs
--- a/main/RTCM32RTCM3.hs
+++ b/main/RTCM32RTCM3.hs
@@ -22,6 +22,6 @@
   runConduitRes $
     sourceHandle stdin
       =$= conduitDecode
-      =$= replay
+      =$= replayer
       =$= conduitEncode
       $$  sinkHandle stdout
diff --git a/src/Data/RTCM3/Replay.hs b/src/Data/RTCM3/Replay.hs
--- a/src/Data/RTCM3/Replay.hs
+++ b/src/Data/RTCM3/Replay.hs
@@ -2,15 +2,13 @@
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.RTCM3.Replay
-  ( replay
-  , replay'
+  ( replayer
   ) where
 
-import BasicPrelude                hiding (mapM)
+import BasicPrelude
 import Control.Concurrent          hiding (yield)
 import Control.Lens
 import Data.Conduit
-import Data.Conduit.List
 import Data.RTCM3
 import Data.Time
 import Data.Time.Calendar.WeekDate
@@ -32,21 +30,6 @@
   where
     gpsLeapSeconds = 18 :: Int
 
--- | Update time of week on replayed messages to be current.
---
-postDelay :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg
-postDelay = awaitForever $ \case
-  (RTCM3Msg1002 m _rtcm3) -> do
-    tow <- currentTow
-    let n = set (msg1002_header . gpsObservationHeader_tow) tow m
-    yield (RTCM3Msg1002 n (toRTCM3 n))
-  (RTCM3Msg1004 m _rtcm3) -> do
-    tow <- currentTow
-    let n = set (msg1004_header . gpsObservationHeader_tow) tow m
-    yield (RTCM3Msg1004 n (toRTCM3 n))
-  _rtcm3Msg ->
-    pure ()
-
 -- | Delay between two time of week values - differences over 15 seconds are ignored.
 --
 delayTow :: MonadIO m => Word32 -> Word32 -> m ()
@@ -58,29 +41,10 @@
   where
     diffMilliseconds = 15 * 1000
 
--- | Delay between observations.
---
-delay :: MonadIO m => Conduit (Word32, RTCM3Msg) m RTCM3Msg
-delay = awaitForever $ uncurry $ \tow -> \case
-  (RTCM3Msg1002 m rtcm3) -> peek >>= delayTow tow . fromMaybe maxBound . (fst <$>) >> yield (RTCM3Msg1002 m rtcm3)
-  (RTCM3Msg1004 m rtcm3) -> peek >>= delayTow tow . fromMaybe maxBound . (fst <$>) >> yield (RTCM3Msg1004 m rtcm3)
-  _rtcm3Msg              -> pure ()
-
--- | Setup observations with their time of weeks.
---
-preDelay :: Monad m => Conduit RTCM3Msg m (Word32, RTCM3Msg)
-preDelay = awaitForever $ \case
-  (RTCM3Msg1002 m rtcm3) -> yield (m ^. msg1002_header ^. gpsObservationHeader_tow, RTCM3Msg1002 m rtcm3)
-  (RTCM3Msg1004 m rtcm3) -> yield (m ^. msg1004_header ^. gpsObservationHeader_tow, RTCM3Msg1004 m rtcm3)
-  _rtcm3Msg              -> pure ()
-
 -- | Replay observations.
 --
-replay :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg
-replay = preDelay =$= delay =$= postDelay
-
-dog :: MonadIO m => Word32 -> RTCM3Msg -> ConduitM i RTCM3Msg m Word32
-dog tow = \case
+replay :: MonadIO m => Word32 -> RTCM3Msg -> ConduitM i RTCM3Msg m Word32
+replay tow = \case
   (RTCM3Msg1002 m _rtcm3) -> do
     let tow' = m ^. msg1002_header ^. gpsObservationHeader_tow
     delayTow tow tow'
@@ -99,8 +63,8 @@
     yield rtcm3Msg
     pure tow
 
-replay' :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg
-replay' = loop maxBound
+replayer :: MonadIO m => Conduit RTCM3Msg m RTCM3Msg
+replayer = loop maxBound
   where
     loop tow =
-      await >>= maybe (pure tow) (dog tow) >>= loop
+      await >>=  maybe (pure ()) ((>>= loop) . replay tow)
