diff --git a/hint-server.cabal b/hint-server.cabal
--- a/hint-server.cabal
+++ b/hint-server.cabal
@@ -1,5 +1,5 @@
 name: hint-server
-version: 1.4.2
+version: 1.4.3
 cabal-version: >=1.6
 build-type: Simple
 license: BSD3
@@ -24,9 +24,8 @@
     build-depends: base == 4.*,
                    mtl >= 2.1 && < 2.3,
                    monad-loops >= 0.3 && < 0.5,
-                   hint == 0.4.*,
+                   hint >= 0.6.0,
                    eprocess == 1.7.*,
                    exceptions >= 0.6 && < 0.9
     exposed-modules: Language.Haskell.Interpreter.Server
     hs-source-dirs: src
-    
diff --git a/src/Language/Haskell/Interpreter/Server.hs b/src/Language/Haskell/Interpreter/Server.hs
--- a/src/Language/Haskell/Interpreter/Server.hs
+++ b/src/Language/Haskell/Interpreter/Server.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE ImpredicativeTypes #-}
+{-# LANGUAGE CPP #-}
 
 -- | This module provides a server process (implemented using eprocess) that can receive and run actions in the Interpreter monad.
 module Language.Haskell.Interpreter.Server (
@@ -9,7 +10,11 @@
     ) where
 
 import Control.Concurrent.MVar
+#if __GLASGOW_HASKELL__ >= 800
+import Control.Monad.Except
+#else
 import Control.Monad.Error
+#endif
 import Control.Monad.Loops
 import Control.Monad.Catch (catch)
 import Control.Concurrent.Process
@@ -21,7 +26,7 @@
 
 instance MonadInterpreter m => MonadInterpreter (ReceiverT r m) where
     fromSession = lift . fromSession
-    modifySessionRef a = lift . (modifySessionRef a)
+    modifySessionRef a = lift . modifySessionRef a
     runGhc = lift . runGhc
 
 -- | Starts the server. Usage:
@@ -29,7 +34,7 @@
 --      handle <- start
 -- @
 start :: IO ServerHandle
-start = (spawn $ makeProcess runInterpreter interpreter) >>= return . SH
+start = fmap SH (spawn $ makeProcess runInterpreter interpreter)
     where interpreter =
             do
                 setImports ["Prelude"]
@@ -69,7 +74,7 @@
 flush server = runIn server $ return ()
 
 try :: InterpreterT IO b -> InterpreterT IO (Either InterpreterError b)
-try a = (a >>= return . Right) `catch` (return . Left)
+try a = fmap Right a `catch` (return . Left)
 
 -- | Stops the server. Usage:
 -- @
