diff --git a/Shellac-haskeline.cabal b/Shellac-haskeline.cabal
--- a/Shellac-haskeline.cabal
+++ b/Shellac-haskeline.cabal
@@ -1,6 +1,6 @@
 Name:           Shellac-haskeline
-Cabal-Version:  >=1.2
-Version:        0.1
+Cabal-Version:  >=1.6
+Version:        0.2
 Category:       User Interfaces
 License:        BSD3
 License-File:   LICENSE
@@ -16,7 +16,8 @@
 Build-Type:     Simple
 
 Library
-    Build-depends: base>=3 && <5, Shellac==0.9.*, haskeline==0.5.*, mtl==1.1.*
+    Build-depends: base>=3 && <5, Shellac==0.9.*, haskeline==0.6.*, mtl==1.1.*,
+                   bytestring==0.9.*
     Exposed-Modules:
                 System.Console.Shell.Backend.Haskeline
     ghc-options: -Wall
diff --git a/System/Console/Shell/Backend/Haskeline.hs b/System/Console/Shell/Backend/Haskeline.hs
--- a/System/Console/Shell/Backend/Haskeline.hs
+++ b/System/Console/Shell/Backend/Haskeline.hs
@@ -5,12 +5,14 @@
 import System.Console.Shell.Backend
 import System.Console.Haskeline hiding (completeFilename)
 import qualified System.Console.Haskeline as H
+import qualified System.Console.Haskeline.Encoding as Encoding
 import qualified System.Console.Haskeline.History as History
 import System.Console.Haskeline.IO
 import System.IO
 import Data.IORef
 import Control.Monad.State
 import Data.Maybe(fromMaybe)
+import qualified Data.ByteString as B
 
 data ShellacState = ShellacState {
                         inputState :: InputState,
@@ -72,8 +74,8 @@
 outputter :: BackendOutput -> InputT IO ()
 outputter (RegularOutput str) = outputStr str
 outputter (InfoOutput str) = outputStr str
--- TODO: support unicode here.
-outputter (ErrorOutput str) = liftIO $ hPutStr stderr str
+outputter (ErrorOutput str) = Encoding.encode str
+                                >>= liftIO . B.hPutStr stderr
 
 
 wrapShellacCompleter :: String -> CompletionFunction -> Maybe (String -> IO [String])
