--- a/src/System/Taffybar/Context.hs
+++ b/src/System/Taffybar/Context.hs
@@ -56,7 +56,7 @@ logIO = logM "System.Taffybar.Context"
 logC :: MonadIO m => System.Log.Logger.Priority -> String -> m ()
 logC p = liftIO . logIO p
 
-type Taffy m v = MonadIO m => ReaderT Context m v
+type Taffy m v = ReaderT Context m v
 type TaffyIO v = ReaderT Context IO v
 type Listener = Event -> Taffy IO ()
 type SubscriptionList = [(Unique, Listener)]
@@ -163,7 +163,7 @@ buildContext TaffybarConfig
                 }
   _ <- runMaybeT $ MaybeT GI.Gdk.displayGetDefault >>=
               (lift . GI.Gdk.displayGetDefaultScreen) >>=
-              (lift . flip GI.Gdk.afterScreenMonitorsChanged
+              (lift . (\x y -> GI.Gdk.afterScreenMonitorsChanged y x)
                -- XXX: We have to do a force refresh here because there is no
                -- way to reliably move windows, since the window manager can do
                -- whatever it pleases.
--- a/src/System/Taffybar/Widget/Windows.hs
+++ b/src/System/Taffybar/Widget/Windows.hs
@@ -74,7 +74,7 @@ windowsNew config = do
   subscription <-
     subscribeToPropertyEvents [ewmhActiveWindow, ewmhWMName, ewmhWMClass]
                       activeWindowUpdatedCallback
-  _ <- liftReader (Gtk.onWidgetUnrealize label) (unsubscribe subscription)
+  _ <- liftReader (\x -> Gtk.onWidgetUnrealize label x) (unsubscribe subscription)
 
   context <- ask
 
