diff --git a/src/QBar/Core.hs b/src/QBar/Core.hs
index 59104f998cc2711964c771c351b56315a55d75e8..8a235cfa7e9da14ee401c0fbf00e27f381ae353d 100644
--- a/src/QBar/Core.hs
+++ b/src/QBar/Core.hs
@@ -14,6 +14,8 @@ import Control.Exception (IOException)
 import Control.Lens
 import Control.Monad (forever)
 import Control.Monad.Reader (ReaderT, runReaderT, ask)
+import Control.Monad.State (StateT)
+import Control.Monad.Writer (WriterT)
 import Data.Aeson.TH
 import qualified Data.ByteString.Lazy.Char8 as C8
 import Data.Int (Int64)
@@ -93,6 +95,12 @@ instance MonadBarIO BarIO where
   liftBarIO = id
 instance (MonadBarIO m) => MonadBarIO (Proxy a' a b' b m) where
   liftBarIO = lift . liftBarIO
+instance (MonadBarIO m) => MonadBarIO (StateT a m) where
+  liftBarIO = lift . liftBarIO
+instance (MonadBarIO m) => MonadBarIO (ReaderT a m) where
+  liftBarIO = lift . liftBarIO
+instance (MonadBarIO m, Monoid a) => MonadBarIO (WriterT a m) where
+  liftBarIO = lift . liftBarIO
 
 askBar :: MonadBarIO m => m Bar
 askBar = liftBarIO $ lift ask