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.0.0
+version: 1.1.0
 cabal-version: >=1.6
 build-type: Simple
 license: BSD3
@@ -28,7 +28,7 @@
                    mtl >=1.1.0,                 mtl < 1.2,
                    monad-loops >=0.3.0,         monad-loops < 0.4,
                    hint >=0.3.1,                hint < 0.4,
-                   eprocess >=1.0.0,            eprocess < 2
+                   eprocess >=1.1.0,            eprocess < 2
     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
@@ -14,9 +14,7 @@
 
 -- | The server handle.  It's returned on process creation and should be used
 -- afterwards to send messages to it
-newtype ServerHandle = SH {handle :: Handle (Either Stop (InterpreterT IO ()))}
-
-data Stop = Stop
+newtype ServerHandle = SH {handle :: Handle (InterpreterT IO ())}
 
 instance MonadInterpreter m => MonadInterpreter (ReceiverT r m) where
     fromSession = lift . fromSession
@@ -32,13 +30,7 @@
     where interpreter =
             do
                 setImports ["Prelude"]
-                iterateWhile id $ do
-                                    v <- recv
-                                    case v of
-                                        Left Stop ->
-                                            return False
-                                        Right acc ->
-                                            lift acc >> return True
+                forever $ recv >>= lift
 
 -- | Asynchronically runs an action and returns the /MVar/ that will be filled
 -- with the result when it's there. Usage:
@@ -50,7 +42,7 @@
             -> IO (MVar (Either InterpreterError a))
 asyncRunIn server action = do
                                 resVar <- liftIO newEmptyMVar
-                                sendTo (handle server) $ Right $ try action >>= liftIO . putMVar resVar
+                                sendTo (handle server) $ try action >>= liftIO . putMVar resVar
                                 return resVar
 
 -- | Runs the action. Usage:
@@ -62,7 +54,7 @@
        -> IO (Either InterpreterError a)
 runIn server action = runHere $ do
                                     me <- self
-                                    sendTo (handle server) $ Right $ try action >>= sendTo me
+                                    sendTo (handle server) $ try action >>= sendTo me
                                     recv
 
 -- | Runs all the pending actions (those that where run using 'asyncRunIn'. Usage:
@@ -81,4 +73,4 @@
 --      stop serverhandle
 -- @
 stop :: ServerHandle -> IO ()
-stop server = sendTo (handle server) $ Left Stop
+stop = kill . handle
