diff --git a/README b/README
--- a/README
+++ b/README
@@ -32,8 +32,22 @@
 Alex 3.0 now supports unicode natively, and has been included as a
 dependency in the cabal file.
 
+Note: The generation of the lexical analyser has been separated out,
+      to remove the install-time dependency on Alex. If any changes
+      need to be made to the lexer, the Lexer.x source lies in
+      src-dev, and the runalex.sh script will invoke Alex with the
+      appropriate directories.
 
+      At the moment (0.5.6), the lexer can only be generated with Alex
+      3.0.1
+
 Changes
+
+0.5.7 Remove the hs-source-dirs from test suite to prevent compilation
+      issues (@nomeata) 
+
+      Introduce parseFileUtf8 to explicitly use utf8 for parsing a
+      file, and update tests to use it where needed. Closes #21
 
 0.5.6 Remove constraint on Alex 3.0.1, it is only required to make
       changes to the lexer. Closes #19
diff --git a/language-javascript.cabal b/language-javascript.cabal
--- a/language-javascript.cabal
+++ b/language-javascript.cabal
@@ -1,5 +1,5 @@
 Name:                language-javascript
-Version:             0.5.6
+Version:             0.5.7
 Synopsis:            Parser for JavaScript
 Description:         Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended as frontend to hjsmin.
                      .
@@ -72,8 +72,7 @@
                  , blaze-builder    >= 0.2     && < 1
                  -- need our own library for tests
                  , language-javascript >= 0.5.5
-  hs-source-dirs: . src ./dist/build
-
+  
 
 source-repository head
   type:     git
diff --git a/runtests.hs b/runtests.hs
--- a/runtests.hs
+++ b/runtests.hs
@@ -294,7 +294,7 @@
 
    , testCase "unicode4" (testProg "x=\"àáâãäå\";y='\3012a\0068'" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"\\224\\225\\226\\227\\228\\229\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator JSLiteral \"=\",JSStringLiteral '\\'' \"\\3012aD\"],JSLiteral \"\"])")
 
-   , testCase "unicode5f" (testFile "./test/Unicode.js" "JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"]")
+   , testCase "unicode5f" (testFileUtf8 "./test/Unicode.js" "JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"]")
 
    , testCase "bug2.a" (testProg "function() {\nz = function /*z*/(o) {\nreturn r;\n};}" "Right (JSSourceElementsTop [JSExpression [JSFunctionExpression [] [] (JSBlock ([JSExpression [JSIdentifier \"z\",JSOperator JSLiteral \"=\",JSFunctionExpression [] [JSIdentifier \"o\"] (JSBlock ([JSReturn [JSExpression [JSIdentifier \"r\"]] JSLiteral \";\"]))],JSLiteral \";\"]))],JSLiteral \"\"])")
 
@@ -775,6 +775,12 @@
 testFile :: FilePath -> String -> IO ()
 testFile fileName expected = do
   res <- parseFile fileName
+  -- expected @=? (liftM show $ parseFile fileName)
+  (expected @=? (showStripped res))
+
+testFileUtf8 :: FilePath -> String -> IO ()
+testFileUtf8 fileName expected = do
+  res <- parseFileUtf8 fileName
   -- expected @=? (liftM show $ parseFile fileName)
   (expected @=? (showStripped res))
 
diff --git a/src/Language/JavaScript/Parser.hs b/src/Language/JavaScript/Parser.hs
--- a/src/Language/JavaScript/Parser.hs
+++ b/src/Language/JavaScript/Parser.hs
@@ -3,6 +3,7 @@
          PA.parse
        , PA.readJs
        , PA.parseFile
+       , PA.parseFileUtf8
        , PA.showStripped
        , PA.showStrippedMaybe
        , JSNode(..)
diff --git a/src/Language/JavaScript/Parser/Parser.hs b/src/Language/JavaScript/Parser/Parser.hs
--- a/src/Language/JavaScript/Parser/Parser.hs
+++ b/src/Language/JavaScript/Parser/Parser.hs
@@ -4,6 +4,7 @@
    , readJs
    -- , readJsKeepComments
    , parseFile
+   , parseFileUtf8
    -- * Parsing expressions
    -- parseExpr
    , parseUsing
@@ -15,7 +16,7 @@
 import Language.JavaScript.Parser.Grammar5
 import Language.JavaScript.Parser.Lexer
 import qualified Language.JavaScript.Parser.AST as AST
-
+import System.IO
 
 -- | Parse one compound statement, or a sequence of simple statements.
 -- Generally used for interactive input, such as from the command line of an interpreter.
@@ -41,6 +42,16 @@
 parseFile filename =
   do
      x <- readFile (filename)
+     return $ readJs x
+
+-- | Parse the given file, explicitly setting the encoding to UTF8
+-- when reading it
+parseFileUtf8 :: FilePath -> IO AST.JSNode
+parseFileUtf8 filename =
+  do
+     h <- openFile filename ReadMode
+     hSetEncoding h utf8
+     x <- hGetContents h
      return $ readJs x
 
 showStripped :: AST.JSNode -> String
