diff --git a/src/QBar/Core.hs b/src/QBar/Core.hs
index 4d6455e13bd68a3a1404402452d35ac975925538..59104f998cc2711964c771c351b56315a55d75e8 100644
--- a/src/QBar/Core.hs
+++ b/src/QBar/Core.hs
@@ -87,13 +87,15 @@ newtype BarUpdateChannel = BarUpdateChannel (IO ())
 type BarUpdateEvent = Event.Event
 
 
-class MonadBarIO m where
-  askBar :: m Bar
+class (Monad m) => MonadBarIO m where
+  liftBarIO :: BarIO a -> m a
 instance MonadBarIO BarIO where
-  askBar = lift ask
-instance MonadBarIO (Proxy a' a b' b BarIO) where
-  askBar = lift askBar
+  liftBarIO = id
+instance (MonadBarIO m) => MonadBarIO (Proxy a' a b' b m) where
+  liftBarIO = lift . liftBarIO
 
+askBar :: MonadBarIO m => m Bar
+askBar = liftBarIO $ lift ask
 
 mkBlockState :: BlockOutput -> BlockState
 mkBlockState blockOutput = Just (blockOutput, Nothing)