diff --git a/src/UU/Scanner/GenTokenParser.hs b/src/UU/Scanner/GenTokenParser.hs
--- a/src/UU/Scanner/GenTokenParser.hs
+++ b/src/UU/Scanner/GenTokenParser.hs
@@ -1,13 +1,14 @@
 module UU.Scanner.GenTokenParser where
-import GHC.Prim
+import GHC.Base
 import UU.Parsing.Interface(IsParser(pCostSym, pSym, (<$>)))
 import UU.Scanner.GenToken(GenToken(..))
 import UU.Scanner.Position(Pos, noPos)
 
 
 pCostReserved'          :: IsParser p (GenToken key tp val) 
-                        => Int# -> key -> p (GenToken key tp val)
-pCostReserved' c key    =  let tok = Reserved key noPos 
+                        => Int -> key -> p (GenToken key tp val)
+pCostReserved' (I# c) key
+                        =  let tok = Reserved key noPos 
                            in  pCostSym c tok tok 
 
 pReserved'              :: IsParser p (GenToken key tp val) 
@@ -16,8 +17,9 @@
                            in  pSym tok 
 
 pCostValToken'          :: IsParser p (GenToken key tp val) 
-                        => Int# -> tp -> val -> p (GenToken key tp val)
-pCostValToken' c tp val =  let tok = ValToken tp val noPos 
+                        => Int -> tp -> val -> p (GenToken key tp val)
+pCostValToken' (I# c) tp val
+                        =  let tok = ValToken tp val noPos 
                            in  pCostSym c tok tok 
 
 pValToken'              :: IsParser p (GenToken key tp val) 
@@ -27,14 +29,14 @@
 
 
 pCostReserved           :: IsParser p (GenToken key tp val) 
-                        => Int# -> key -> p Pos
+                        => Int -> key -> p Pos
 pCostReserved c key     =  let getPos x = case x of
                                 Reserved _   p -> p
                                 ValToken _ _ p -> p
                            in getPos <$> pCostReserved' c key
                           
 pCostValToken           :: IsParser p (GenToken key tp val) 
-                        => Int# -> tp -> val -> p (val,Pos)
+                        => Int -> tp -> val -> p (val,Pos)
 pCostValToken c tp val  =  let getVal x = case x of
                                 ValToken _ v p -> (v,p)
                                 _              -> error "pValToken: cannot get value of Reserved"
@@ -42,11 +44,11 @@
 
 pReserved               :: IsParser p (GenToken key tp val) 
                         => key -> p Pos
-pReserved               =  pCostReserved 5# 
+pReserved               =  pCostReserved 5
 
 pValToken               :: IsParser p (GenToken key tp val) 
                         => tp -> val -> p (val,Pos)
-pValToken               =  pCostValToken 5#
+pValToken               =  pCostValToken 5
 
 pValTokenNoPos          :: IsParser p (GenToken key tp val) 
                         => tp -> val -> p val
diff --git a/uulib.cabal b/uulib.cabal
--- a/uulib.cabal
+++ b/uulib.cabal
@@ -1,7 +1,7 @@
 cabal-version: >=1.1
 build-type: Simple
 name: uulib
-version: 0.9.8
+version: 0.9.9
 license: LGPL
 license-file: COPYRIGHT
 maintainer: Arie Middelkoop <ariem@cs.uu.nl>
@@ -11,27 +11,35 @@
 category: Parsing
 stability: Stable
 copyright: Universiteit Utrecht
-build-depends: base, haskell98, ghc-prim
-exposed-modules: UU.Parsing.CharParser UU.Parsing.Derived
-                 UU.Parsing.Interface UU.Parsing.MachineInterface
-                 UU.Parsing.Merge UU.Parsing.Offside UU.Parsing.Perms
-                 UU.Parsing.StateParser UU.Parsing UU.DData.IntBag 
-                 UU.DData.Map UU.DData.MultiSet UU.DData.Queue
-                 UU.DData.Scc UU.DData.Seq UU.DData.Set UU.PPrint
-                 UU.Pretty.Ext UU.Pretty UU.Scanner.GenToken UU.Scanner.GenTokenOrd
-                 UU.Scanner.GenTokenParser UU.Scanner.GenTokenSymbol
-                 UU.Scanner.Position UU.Scanner.Scanner
-                 UU.Scanner.Token UU.Scanner.TokenParser UU.Scanner.TokenShow
-                 UU.Scanner UU.Util.BinaryTrees UU.Util.PermTree UU.Util.Utils
-                 UU.Pretty.Basic UU.Parsing.Machine    
-                 UU.DData.IntMap  
-                 UU.DData.IntSet        
-extensions:  RankNTypes FunctionalDependencies TypeSynonymInstances UndecidableInstances FlexibleInstances MultiParamTypeClasses FlexibleContexts CPP ExistentialQuantification
-ghc-options: -fglasgow-exts
-hs-source-dirs: src
 extra-source-files: README, LICENSE-LGPL,
                     examples/bibtex/Bibtex.hs,
                     examples/parser/Example.hs,
                     examples/parser/Makefile,
                     examples/parser/README,
                     examples/parser/Scanner.x
+flag have_ghc_prim
+  description: ghc-prim as separate module
+library
+  if flag(have_ghc_prim)
+    build-depends: base>=4, ghc-prim
+  else
+    build-depends: base<4
+  build-depends: haskell98
+  exposed-modules: UU.Parsing.CharParser UU.Parsing.Derived
+                   UU.Parsing.Interface UU.Parsing.MachineInterface
+                   UU.Parsing.Merge UU.Parsing.Offside UU.Parsing.Perms
+                   UU.Parsing.StateParser UU.Parsing UU.DData.IntBag 
+                   UU.DData.Map UU.DData.MultiSet UU.DData.Queue
+                   UU.DData.Scc UU.DData.Seq UU.DData.Set UU.PPrint
+                   UU.Pretty.Ext UU.Pretty UU.Scanner.GenToken UU.Scanner.GenTokenOrd
+                   UU.Scanner.GenTokenParser UU.Scanner.GenTokenSymbol
+                   UU.Scanner.Position UU.Scanner.Scanner
+                   UU.Scanner.Token UU.Scanner.TokenParser UU.Scanner.TokenShow
+                   UU.Scanner UU.Util.BinaryTrees UU.Util.PermTree UU.Util.Utils
+                   UU.Pretty.Basic UU.Parsing.Machine    
+                   UU.DData.IntMap  
+                   UU.DData.IntSet        
+  extensions:  RankNTypes FunctionalDependencies TypeSynonymInstances UndecidableInstances FlexibleInstances MultiParamTypeClasses FlexibleContexts CPP ExistentialQuantification
+  ghc-options: -fglasgow-exts
+  hs-source-dirs: src
+
