 
 -- * Types
   Bus,
+  BusClass,
   -- | The result of a 'BusSyncHandler'.
   BusSyncReply,
   -- | A handler that will be invoked synchronously when a new message
   --   is injected into the bus. This function is mostly used internally.
   --   Only one sync handler may be attached to a given bus.
   BusSyncHandler,
-  BusClass,
   castToBus,
   toBus,
 -- * Bus Operations


-- | Use a synchronous message handler that converts all messages to signals.
busUseSyncSignalHandler :: BusClass busT
                        => busT
                        -> IO ()
busUseSyncSignalHandler bus = do
  objectWithLock bus $ do

--   If the time given is 'Nothing', the function will wait forever.
--   If the time given is @0@, the function will behave like 'busPop'.
busTimedPop :: BusClass busT
            => busT               -- ^ @bus@ - a 'Bus'
            -> Maybe ClockTime    -- ^ @timeoutM@ - the time to wait for,
                                  --   or 'Nothing' to wait forever
            -> IO (Maybe Message) -- ^ the first message recieved, or
                                  --   'Nothing' if the timeout has expired
busTimedPop bus timeoutM =
    let timeout = case timeoutM of
                    Just timeout' -> timeout'
