diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,8 @@
 Version change log.
+
+=0.19=
+Pull request #84: Moved the Arbitrary instance and the testing-feat dependency to the test-suite. Removed tabs from the lexer.
+
 =0.18=
 Pull request #83: Updated dependencies, migrated to ansi-wl-pprint.
 
diff --git a/language-ecmascript.cabal b/language-ecmascript.cabal
--- a/language-ecmascript.cabal
+++ b/language-ecmascript.cabal
@@ -1,8 +1,8 @@
 Name:           language-ecmascript
-Version:        0.18
-Cabal-Version:	>= 1.10
+Version:        0.19
+Cabal-Version:	>= 1.12
 Copyright:      (c) 2007-2012 Brown University, (c) 2008-2010 Claudiu Saftoiu,
-                (c) 2012-2015 Stevens Institute of Technology, (c) 2016 Eyal Lotem, (c) 2016-2017 Andrey Chudnov
+                (c) 2012-2015 Stevens Institute of Technology, (c) 2016 Eyal Lotem, (c) 2016-2018 Andrey Chudnov
 License:        BSD3
 License-file:   LICENSE
 Author:         Andrey Chudnov, Arjun Guha, Spiridon Aristides Eliopoulos,
@@ -11,7 +11,7 @@
 Homepage:       http://github.com/jswebtools/language-ecmascript
 Bug-reports:    http://github.com/jswebtools/language-ecmascript/issues
 Stability:      experimental
-Tested-with:    GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2
+Tested-with:    GHC==8.2.2
 Extra-Source-Files: test/parse-pretty/*.js, test/diff/left/*.js, test/diff/right/*.js, test/diff/expects/*.diff, CHANGELOG
 Category:       Language
 Build-Type:     Simple
@@ -29,7 +29,7 @@
 Source-repository this
    type: git
    location: git://github.com/jswebtools/language-ecmascript.git
-   tag: 0.18
+   tag: 0.19
 
 Library
   Hs-Source-Dirs:
@@ -45,7 +45,6 @@
     QuickCheck >= 2.5 && < 3,
     template-haskell >= 2.7 && < 3,
     Diff == 0.3.*,
-    testing-feat >= 0.4.0.2 && < 1.1,
     charset >= 0.3
   ghc-options:
     -fwarn-incomplete-patterns
@@ -56,7 +55,6 @@
     Language.ECMAScript3.PrettyPrint
     Language.ECMAScript3.Syntax
     Language.ECMAScript3.Syntax.Annotations
-    Language.ECMAScript3.Syntax.Arbitrary
     Language.ECMAScript3.Syntax.CodeGen
     Language.ECMAScript3.Syntax.QuasiQuote
     Language.ECMAScript3.Analysis.Environment
@@ -70,10 +68,19 @@
   Default-Language: Haskell2010
 
 Test-Suite test
-  Hs-Source-Dirs: test
+  Hs-Source-Dirs: src test
   Type: exitcode-stdio-1.0
   Main-Is: TestMain.hs
   Other-Modules:
+    Language.ECMAScript3.Lexer                                        
+    Language.ECMAScript3.Parser                                       
+    Language.ECMAScript3.Parser.State                                 
+    Language.ECMAScript3.Parser.Type                                  
+    Language.ECMAScript3.PrettyPrint                                  
+    Language.ECMAScript3.SourceDiff                                   
+    Language.ECMAScript3.Syntax                                       
+    Language.ECMAScript3.Syntax.Annotations  
+    Language.ECMAScript3.Syntax.Arbitrary
     Test.Diff
     Test.Unit
     Test.Pretty
@@ -83,12 +90,14 @@
     mtl >= 1 && < 3,
     parsec >= 3 && < 3.2.0,
     ansi-wl-pprint >= 0.6 && < 1,
+    charset >= 0.3,
     containers == 0.*,
     directory >= 1.2 && < 1.4,
     filepath >= 1.3 && < 1.5,
     HUnit >= 1.2 && < 1.7,
     QuickCheck >= 2.5 && < 3,
     data-default-class >= 0.0.1 && < 0.2,
+    testing-feat >= 0.4.0.2 && < 1.1,
     test-framework >= 0.8 && < 0.9,
     test-framework-hunit >= 0.3.0 && < 0.4,
     test-framework-quickcheck2 >= 0.3.0.1 && < 0.4,
diff --git a/src/Language/ECMAScript3/Lexer.hs b/src/Language/ECMAScript3/Lexer.hs
--- a/src/Language/ECMAScript3/Lexer.hs
+++ b/src/Language/ECMAScript3/Lexer.hs
@@ -80,45 +80,45 @@
 
 -- everything but commaSep and semiSep
 identifier :: Stream s Identity Char => Parser s String
-identifier = T.identifier	 lex
+identifier = T.identifier  lex
 reserved :: Stream s Identity Char => String -> Parser s ()
-reserved = T.reserved	 lex
+reserved = T.reserved  lex
 operator :: Stream s Identity Char => Parser s String
-operator = T.operator	 lex
+operator = T.operator  lex
 reservedOp :: Stream s Identity Char => String -> Parser s ()
-reservedOp = T.reservedOp lex	
+reservedOp = T.reservedOp lex 
 charLiteral :: Stream s Identity Char => Parser s Char
-charLiteral = T.charLiteral lex	
+charLiteral = T.charLiteral lex 
 stringLiteral :: Stream s Identity Char => Parser s String
 stringLiteral = T.stringLiteral lex
 -- natural :: Stream s Identity Char => Parser s Integer
--- natural = T.natural lex	
+-- natural = T.natural lex 
 -- integer :: Stream s Identity Char => Parser s Integer
--- integer = T.integer lex	
+-- integer = T.integer lex 
 -- float :: Stream s Identity Char => Parser s Double
 -- float = T.float lex
 -- naturalOrFloat :: Stream s Identity Char => Parser s (Either Integer Double)
 -- naturalOrFloat = T.naturalOrFloat lex
 -- decimal :: Stream s Identity Char => Parser s Integer
--- decimal = T.decimal lex	
+-- decimal = T.decimal lex 
 -- hexadecimal :: Stream s Identity Char => Parser s Integer
--- hexadecimal = T.hexadecimal lex	
+-- hexadecimal = T.hexadecimal lex 
 -- octal :: Stream s Identity Char => Parser s Integer
 -- octal = T.octal lex
 symbol :: Stream s Identity Char => String -> Parser s String
 symbol = T.symbol lex
 whiteSpace :: Stream s Identity Char => Parser s ()
-whiteSpace = T.whiteSpace lex	
+whiteSpace = T.whiteSpace lex 
 parens :: Stream s Identity Char => Parser s a -> Parser s a
-parens = T.parens	 lex
+parens = T.parens  lex
 braces :: Stream s Identity Char => Parser s a -> Parser s a
-braces = T.braces	 lex
+braces = T.braces  lex
 squares :: Stream s Identity Char => Parser s a -> Parser s a
-squares = T.squares lex	
+squares = T.squares lex 
 semi :: Stream s Identity Char => Parser s String
-semi = T.semi	 lex
+semi = T.semi  lex
 comma :: Stream s Identity Char => Parser s String
-comma = T.comma	 lex
+comma = T.comma  lex
 colon :: Stream s Identity Char => Parser s String
 colon = T.colon lex
 dot :: Stream s Identity Char => Parser s String
