diff --git a/Text/ParserCombinators/Parsec/Pos.hs b/Text/ParserCombinators/Parsec/Pos.hs
--- a/Text/ParserCombinators/Parsec/Pos.hs
+++ b/Text/ParserCombinators/Parsec/Pos.hs
@@ -3,17 +3,17 @@
 -- Module      :  Text.ParserCombinators.Parsec.Pos
 -- Copyright   :  (c) Daan Leijen 1999-2001
 -- License     :  BSD-style (see the file libraries/parsec/LICENSE)
--- 
+--
 -- Maintainer  :  Antoine Latter <aslatter@gmail.com>
 -- Stability   :  provisional
 -- Portability :  portable
 --
 -- Textual source positions.
--- 
+--
 -----------------------------------------------------------------------------
 
 module Text.ParserCombinators.Parsec.Pos
-                  ( SourceName, Line, Column                 
+                  ( SourceName, Line, Column
                   , SourcePos
                   , sourceLine, sourceColumn, sourceName
                   , incSourceLine, incSourceColumn
@@ -25,7 +25,7 @@
 -----------------------------------------------------------
 -- Source Positions, a file name, a line and a column.
 -- upper left is (1,1)
------------------------------------------------------------                         
+-----------------------------------------------------------
 type SourceName     = String
 type Line           = Int
 type Column         = Int
@@ -35,8 +35,8 @@
 -- a column number. @SourcePos@ is an instance of the 'Show', 'Eq' and
 -- 'Ord' class.
 data SourcePos      = SourcePos SourceName !Line !Column
-		     deriving (Eq,Ord)
-		
+                     deriving (Eq,Ord)
+
 -- | Create a new 'SourcePos' with the given source name,
 -- line number and column number.
 newPos :: SourceName -> Line -> Column -> SourcePos
@@ -51,7 +51,7 @@
 
 -- | Extracts the name of the source from a source position.
 sourceName :: SourcePos -> SourceName
-sourceName (SourcePos name line column) = name 
+sourceName (SourcePos name line column) = name
 
 -- | Extracts the line number from a source position.
 sourceLine :: SourcePos -> Line
@@ -89,21 +89,21 @@
     = forcePos (foldl updatePosChar pos string)
 
 updatePosChar   :: SourcePos -> Char -> SourcePos
-updatePosChar pos@(SourcePos name line column) c   
+updatePosChar pos@(SourcePos name line column) c
     = forcePos $
       case c of
         '\n' -> SourcePos name (line+1) 1
         '\t' -> SourcePos name line (column + 8 - ((column-1) `mod` 8))
         _    -> SourcePos name line (column + 1)
-        
 
-forcePos :: SourcePos -> SourcePos      
+
+forcePos :: SourcePos -> SourcePos
 forcePos pos@(SourcePos name line column)
     = seq line (seq column (pos))
 
 -----------------------------------------------------------
--- Show positions 
------------------------------------------------------------                                                 
+-- Show positions
+-----------------------------------------------------------
 instance Show SourcePos where
   show (SourcePos name line column)
     | null name = showLineColumn
@@ -111,4 +111,4 @@
     where
       showLineColumn    = "(line " ++ show line ++
                           ", column " ++ show column ++
-                          ")" 
+                          ")"
diff --git a/Text/ParserCombinators/Parsec/Prim.hs b/Text/ParserCombinators/Parsec/Prim.hs
--- a/Text/ParserCombinators/Parsec/Prim.hs
+++ b/Text/ParserCombinators/Parsec/Prim.hs
@@ -42,6 +42,7 @@
 import Prelude
 import Text.ParserCombinators.Parsec.Pos
 import Text.ParserCombinators.Parsec.Error
+import Control.Applicative
 import Control.Monad
 
 -----------------------------------------------------------
@@ -50,7 +51,6 @@
 -- <|>  is the choice operator
 -----------------------------------------------------------
 infix  0 <?>
-infixr 1 <|>
 
 -- | The parser @p <?> msg@ behaves as parser @p@, but whenever the
 -- parser @p@ fails /without consuming any input/, it replaces expect
@@ -66,21 +66,6 @@
 (<?>) :: GenParser tok st a -> String -> GenParser tok st a
 p <?> msg           = label p msg
 
--- | This combinator implements choice. The parser @p \<|> q@ first
--- applies @p@. If it succeeds, the value of @p@ is returned. If @p@
--- fails /without consuming any input/, parser @q@ is tried. This
--- combinator is defined equal to the 'mplus' member of the 'MonadPlus'
--- class and the ('Control.Applicative.<|>') member of 'Control.Applicative.Alternative'.
---
--- The parser is called /predictive/ since @q@ is only tried when
--- parser @p@ didn't consume any input (i.e.. the look ahead is 1).
--- This non-backtracking behaviour allows for both an efficient
--- implementation of the parser combinators and the generation of good
--- error messages.
-(<|>) :: GenParser tok st a -> GenParser tok st a -> GenParser tok st a
-p1 <|> p2           = mplus p1 p2
-
-
 -----------------------------------------------------------
 -- User state combinators
 -----------------------------------------------------------
@@ -137,11 +122,11 @@
                         }
 
 -- | Returns the full parser state as a 'State' record.
-getParserState	    :: GenParser tok st (State tok st)
+getParserState      :: GenParser tok st (State tok st)
 getParserState      =  updateParserState id
 
 -- | @setParserState st@ set the full parser state to @st@.
-setParserState	    :: State tok st -> GenParser tok st (State tok st)
+setParserState      :: State tok st -> GenParser tok st (State tok st)
 setParserState st   = updateParserState (const st)
 
 
@@ -256,6 +241,10 @@
   p >>= f    = parsecBind p f
   fail msg   = parsecFail msg
 
+instance Applicative (GenParser tok st) where
+  pure = return
+  (<*>) = ap
+
 parsecReturn :: a -> GenParser tok st a
 parsecReturn x
   = Parser (\state -> Empty (Ok x state (unknownError state)))
@@ -299,6 +288,10 @@
   mzero         = parsecZero
   mplus p1 p2   = parsecPlus p1 p2
 
+instance Alternative (GenParser tok st) where
+    (<|>) = mplus
+    empty = mzero
+    many = manyAux
 
 pzero :: GenParser tok st a
 pzero = parsecZero
@@ -515,15 +508,15 @@
 -- they will overflow the stack on large inputs
 -----------------------------------------------------------
 
--- | @many p@ applies the parser @p@ /zero/ or more times. Returns a
+-- | @manyAux p@ applies the parser @p@ /zero/ or more times. Returns a
 --    list of the returned values of @p@.
 --
 -- >  identifier  = do{ c  <- letter
 -- >                  ; cs <- many (alphaNum <|> char '_')
 -- >                  ; return (c:cs)
 -- >                  }
-many :: GenParser tok st a -> GenParser tok st [a]
-many p
+manyAux :: GenParser tok st a -> GenParser tok st [a]
+manyAux p
   = do{ xs <- manyAccum (:) p
       ; return (reverse xs)
       }
@@ -596,5 +589,3 @@
                            | otherwise     = Empty (errExpect [c] )
 
        in walk1 s input)
-
-
diff --git a/parsec1.cabal b/parsec1.cabal
--- a/parsec1.cabal
+++ b/parsec1.cabal
@@ -1,10 +1,10 @@
 cabal-version: >= 1.2
 name:           parsec1
-version:        1.0.0.5
+version:        1.0.0.6
 license:        BSD3
 license-file:   LICENSE
 author:         Daan Leijen <daan@cs.uu.nl>
-maintainer:     Christian Maeder <Christian.Maeder@dfki.de>
+maintainer:     c.maeder@jacobs-university.de
 homepage:       http://www.cs.uu.nl/~daan/parsec.html
 category:       Parsing
 synopsis:       Portable monadic parser combinators
