diff --git a/README b/README
--- a/README
+++ b/README
@@ -27,7 +27,7 @@
   USAGE
   -----
   
-  > lhs2TeX-hl INPUTFILE -o OUTPUTFILE
+  > lhs2TeX-hl -o OUTPUTFILE INPUTFILE
   
   For more details see:
   
@@ -38,21 +38,36 @@
   In your .tex files add %include OUTPUFILE to tell lhs2tex to use the generated
   formatting directives. You'll need to provide the following commands yourself:
   
+  * \lhsCHsyntax
   * \lhsCHkeyword
   * \lhsCHprelude
   * \lhsCHtype
-  * \lhsCHlitNumber
   * \lhsCHconstructor
   * \lhsCHfunction
   * \lhsCHinfixoperator
+  * \lhsCHclass
   
+  This only generates formatting directives for keywords for you. If you want to
+  change the formatting of characters, strings or literal numbers add the
+  following directives:
+  
+  > %subst char a    	= "\color{char}\text{\tt ''" a "''}"
+  > %subst string a  	= "\color{string}\text{\tt \char34 " a "\char34}"
+  > %subst numeral a =  "\color{numeral}{ " a " }"
+  
   KNOWN ISSUES
   ------------
   
   * Infix operators may not work that great, or normal functions that are used
-    `infix`.
-  * It doesn't do literal string and char highlighting yet.
+    `infix`. Sometimes you might get an `ambiguous infix operator' error.
   * AGDA isn't supported yet unfortunately.
   * Errors aren't that informative. :)
+  
+  CHANGES
+  -------
+  1.2.0:  * Hopefully the ``ambiguous infix operator'' error shouldn't occur 
+            that often anymore.
+          * Removed the AGDA dependency for until it actually works.
+          * Classes are now detected.
   
   
diff --git a/examples/theme1.tex b/examples/theme1.tex
--- a/examples/theme1.tex
+++ b/examples/theme1.tex
@@ -1,17 +1,22 @@
-% usepackage color
-\definecolor{datatype}{RGB}{42,0,217}
-\definecolor{class}{RGB}{197,11,16}
+% use package color
+\definecolor{syntax}{RGB}{0, 0, 0}
+\definecolor{datatype}{RGB}{196, 6, 11}
+\definecolor{class}{RGB}{168,37,39}
 \definecolor{fieldname}{RGB}{0,0,162}
 \definecolor{prelude}{RGB}{64,80,117}
 \definecolor{numeral}{RGB}{0,0,205}
-\definecolor{infixoperator}{RGB}{42,0,217}
-\definecolor{constructor}{RGB}{0,161,0}
-\definecolor{keyword}{RGB}{229,120,0}
+\definecolor{infixoperator}{RGB}{19, 19, 168}
+\definecolor{constructor}{RGB}{196, 6, 11}
+\definecolor{keyword}{RGB}{4, 58, 252}
 \definecolor{special1}{RGB}{159,138,0}
+\definecolor{string}{RGB}{3, 106, 7}
+\definecolor{char}  {RGB}{3, 106, 7}
 
-\newcommand{\lhsCHfunction}[1]{\color{infixoperator}{\mathbf{#1}}}
+\newcommand{\lhsCHsyntax}[1]{\color{syntax}{{#1}}}
+\newcommand{\lhsCHfunction}[1]{\color{infixoperator}{{#1}}}
+\newcommand{\lhsCHinfixoperator}[1]{\color{infixoperator}{{#1}}}
 \newcommand{\lhsCHprelude}[1]{\color{prelude}{\mathbf{#1}}}
 \newcommand{\lhsCHkeyword}[1]{\color{keyword}{\textbf{#1}}}
-\newcommand{\lhsCHconstructor}[1]{\color{constructor}{{#1}}}
+\newcommand{\lhsCHconstructor}[1]{\color{constructor}{\textbf{#1}}}
 \newcommand{\lhsCHlitNumber}[1]{\color{numeral}{{#1}}}
 \newcommand{\lhsCHtype}[1]{\color{datatype}{{#1}}}
diff --git a/lhs2TeX-hl.cabal b/lhs2TeX-hl.cabal
--- a/lhs2TeX-hl.cabal
+++ b/lhs2TeX-hl.cabal
@@ -1,15 +1,15 @@
 Name:               lhs2TeX-hl
-Version:            0.1.1.1
+Version:            0.1.2.0
 Cabal-Version:      >= 1.6
 License:            MIT
 Author:             Alessandro Vermeulen <me@alessandrovermeulen.me>
 Maintainer:         Alessandro Vermeulen <me@alessandrovermeulen.me>
 Synopsis:           Literate highlighter preprocessor for lhs2tex 
 Description:        A helper executable for highlighting code with lhs2tex. It
-										parses any haskell file and outputs a format file to be used
-										with lhs2tex. Currently no recursion is supported.
+										parses any Haskell file and outputs a format file to be used
+										with lhs2TeX. Currently no recursion is supported.
 Build-Type:         Simple
-Stability:          Expirimental
+Stability:          Experimental
 category:           Development, Language
 Data-files:         README examples/theme1.tex
 License-file:       LICENSE
@@ -23,7 +23,6 @@
                   , MissingH >= 1.1.0.3
                   , syb >= 0.1.0.1
                   , cmdargs >= 0.1
-                  , Agda >= 2.2.6
   hs-source-dirs:   src
   Other-Modules:    Language.LaTeX, Literate.Agda, Literate.Haskell,
                     Literate.SimpleInfo, Base.CLI, Base.Common
diff --git a/src/Base/Common.hs b/src/Base/Common.hs
--- a/src/Base/Common.hs
+++ b/src/Base/Common.hs
@@ -1,4 +1,4 @@
 module Base.Common where
   
-programVersion = "0.1.1.1"
+programVersion = "0.1.2.0"
 programName    = "lhs2TeX-hl"
diff --git a/src/Literate/Agda.hs b/src/Literate/Agda.hs
--- a/src/Literate/Agda.hs
+++ b/src/Literate/Agda.hs
@@ -27,13 +27,11 @@
                    mod <- parseFile' moduleParser abpath
                    return simpleinfo{ functions = []
                                     , operators = listOperators mod
-                                    , literalNumbers = listLiteralNumbers mod
                                     }
 
 mapping :: [(String, SimpleInfo -> [(String,String)])]
 mapping = [ 
-            ("litNumber",     mnumbers)
-          , ("infixoperator", moperators)
+            ("infixoperator", moperators)
           ]
                                 
 listOperators :: Module -> [String]
@@ -42,13 +40,5 @@
         listOperator (OpApp _ n _) = [show n]
         listOperator (_)  = []
         
-listLiteralNumbers :: Module -> [String]
-listLiteralNumbers =  nub . everything (++) ([] `mkQ` listLiteralNumber)
- where  listLiteralNumber :: Literal -> [String]
-        listLiteralNumber (LitInt   _ v) = [show v]
-        listLiteralNumber (LitFloat _ v) = [show v]
-        listLiteralNumber (_)  = []
-        
-mnumbers SimpleInfo{literalNumbers} = map dp literalNumbers
 moperators SimpleInfo{operators} = map (\ a -> (a, "\\ "++ makeLatexSafe a++"\\ ")) 
                                        operators
diff --git a/src/Literate/Haskell.hs b/src/Literate/Haskell.hs
--- a/src/Literate/Haskell.hs
+++ b/src/Literate/Haskell.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE NamedFieldPuns #-}
-module Literate.Haskell (runHaskell, mapping) where
+module Literate.Haskell (runHaskell, mapping, listClasses, fromParse) where
 
 import Data.List (nub)
 import Data.Data
@@ -15,7 +15,8 @@
 
 
 runHaskell :: FilePath -> IO SimpleInfo
-runHaskell fp = do mod <- parseFile fp
+runHaskell fp = do mod <- parseFileWithMode (defaultParseMode { fixities = baseFixities } ) 
+                                            fp
                    case mod of
                      (ParseOk m)           -> return $ getSimpleInfo m
                      (ParseFailed loc err) -> error $ 
@@ -34,19 +35,6 @@
     getData (TyCon n) = [n]
     getData _         = []
 
-
-listLitNumbers ::  Module -> [String]
-listLitNumbers =  nub . everything (++) ([] `mkQ` listLitNumber)
- where  listLitNumber :: Literal -> [String]
-        listLitNumber (Char   _) = []
-        listLitNumber (String _) = []
-        listLitNumber (Int v)  = [show v]
-        listLitNumber (Frac v)  = [show v]
-        listLitNumber (PrimInt v)  = [show v]
-        listLitNumber (PrimFloat v)  = [show v]
-        listLitNumber (PrimDouble v)  = [show v]
-        listLitNumber (_)  = []
-
 listConstructors ::  Module -> [String]
 listConstructors =  nub . everything (++) ([] `mkQ` listConstructor)
  where  listConstructor :: ConDecl -> [String]
@@ -68,12 +56,25 @@
         operatorUse (InfixApp _ qop _)  = [prettyPrint qop]
         operatorUse _                   = []
 
+listClasses ::  Module -> [String]
+listClasses =  nub . everything (++) ([] `mkQ` listClassDeriving
+                                         `extQ` listClassDecl
+                                         `extQ` listClassContext)
+ where  listClassDeriving :: Deriving -> [String] 
+        listClassDeriving (name , _)  = [prettyPrint name]
+        listClassDecl :: Decl -> [String]
+        listClassDecl (ClassDecl _ _ name _ _ _) = [prettyPrint name]
+        listClassDecl _ = []
+        listClassContext :: Asst -> [String]
+        listClassContext (ClassA name _) = [prettyPrint name]
+        listClassContext _               = []
 
+
 getSimpleInfo m = simpleinfo{ types          = listTypes m
-                            , literalNumbers = listLitNumbers m
                             , constructors   = listConstructors m
                             , functions      = listFunctions m
                             , operators      = listOperators m
+                            , classes        = listClasses   m
                             }
 
 
@@ -84,7 +85,6 @@
           , ("prelude",      prelude)
           , ("applicative",  applicative )
           , ("type",         mtypes) 
-          , ("litNumber",    mnumbers)
           , ("constructor",  mconstructors)
           , ("function",  mfunctions)
           , ("infixoperator", moperators)
@@ -94,7 +94,6 @@
 mtypes SimpleInfo{types} = map dp types
 moperators SimpleInfo{operators} = map (\ a -> (a, "\\ "++ makeLatexSafe a++"\\ ")) 
                                        operators
-mnumbers SimpleInfo{literalNumbers} = map dp literalNumbers
 mconstructors SimpleInfo{constructors} = map (dp) constructors
 mfunctions SimpleInfo{functions   } = map (dp) functions
 
@@ -154,6 +153,9 @@
 
 (<++>) :: a -> b -> a
 (<++>) a b = a
+
+tid :: Typeable a => a -> a
+tid = id
 
 
 fromParse (ParseOk m) = m
diff --git a/src/Literate/SimpleInfo.hs b/src/Literate/SimpleInfo.hs
--- a/src/Literate/SimpleInfo.hs
+++ b/src/Literate/SimpleInfo.hs
@@ -7,9 +7,9 @@
   constructors    :: [String],
   functions       :: [String],
   operators       :: [String],
-  literalNumbers  :: [String],
-  literalChars    :: [Char],
-  literalStrings  :: [String]
+  classes         :: [String]
+
+  
 } deriving Show
 
 simpleinfo = SimpleInfo{ fileName = ""
@@ -18,7 +18,5 @@
                        , constructors = []
                        , functions = []
                        , operators = []
-                       , literalNumbers = []
-                       , literalChars   = []
-                       , literalStrings = []
+                       , classes   = []
                        }
diff --git a/src/LiterateHighlighter.hs b/src/LiterateHighlighter.hs
--- a/src/LiterateHighlighter.hs
+++ b/src/LiterateHighlighter.hs
@@ -13,7 +13,7 @@
 import Base.CLI
 import System.Console.CmdArgs
 
-import Literate.Agda
+-- import Literate.Agda
 import Literate.Haskell 
 import Literate.SimpleInfo
 
@@ -26,16 +26,17 @@
           hSetEncoding stdout utf8
           hSetEncoding stderr utf8
          
-          hOutput <- openFile  (output args) WriteMode
+          hOutput <- openFile (output args) WriteMode
           hSetEncoding hOutput utf8
 
           let writer = writeOutput hOutput
                            
           if (agda_mode args)
             then
-              mapM_ (\file -> runAgda file
-                     >>= (flip writer) Literate.Agda.mapping)
-                    (input args)
+              error "Agda mode is currently not supported."
+              -- mapM_ (\file -> runAgda file
+              --                      >>= (flip writer) Literate.Agda.mapping)
+              --                     (input args)
             else
               mapM_ (\file -> runHaskell file
                      >>= (flip writer) Literate.Haskell.mapping)
