diff --git a/src/UHC/Util/ParseUtils.hs b/src/UHC/Util/ParseUtils.hs
--- a/src/UHC/Util/ParseUtils.hs
+++ b/src/UHC/Util/ParseUtils.hs
@@ -1,19 +1,29 @@
 {-# LANGUAGE RankNTypes, FlexibleContexts #-}
 
 module UHC.Util.ParseUtils
-  ( PlainParser
+  ( -- * Specific parser types
+    PlainParser
   , LayoutParser, LayoutParser2
   
+  -- * Top level wrappers/invocations
   , parsePlain
   , parseOffsideToResMsgs
   , parseToResMsgs
+  , parseToResWith
   
   , parseOffsideToResMsgsStopAtErr
   
+  -- * Additional parser combinators
   , pAnyFromMap, pAnyKey
   , pMaybe, pMb
   
   , pDo
+  
+  -- * Re-exports
+  , position
+  
+  -- * Dealing with Message
+  , fromMessage
   )
   where
 
@@ -23,6 +33,7 @@
 import UU.Parsing.Machine
 import UU.Parsing.Offside
 import UU.Scanner.Position( Position(..) )
+import UU.Scanner.GenToken
 
 -------------------------------------------------------------------------
 -- Type(s) of parsers
@@ -64,10 +75,17 @@
 parsePlain p inp
   = valFromPair (parse p inp)
 
-parseToResMsgs :: (Symbol s,InputState inp s pos) => AnaParser inp Pair s pos a -> inp -> (a,[Message s pos])
+-- | Invoke parser, yielding result + errors
+parseToResMsgs :: (Symbol s, InputState inp s pos) => AnaParser inp Pair s pos a -> inp -> (a,[Message s pos])
 parseToResMsgs p inp
   = toResMsgs (parse p inp)
 
+-- | Invoke parser, yielding result + errors processed with a function
+parseToResWith :: (Symbol s, Show s, Eq s, InputState inp s pos) => (pos -> String -> String -> e) -> AnaParser inp Pair s pos a -> inp -> (a,[e])
+parseToResWith f p inp
+  = (r, map (fromMessage f) e)
+  where (r,e) = toResMsgs (parse p inp)
+
 parseOffsideToResMsgs
   :: (Symbol s, InputState i s p, Position p)
        => OffsideParser i Pair s p a -> OffsideInput i s p -> (a,[Message (OffsideSymbol s) p])
@@ -169,4 +187,12 @@
 -- given (non-empty) key->value map, return parser for all keys returning corresponding value
 pAnyFromMap :: (IsParser p s) => (k -> p a1) -> Map.Map k v -> p v
 pAnyFromMap pKey m = foldr1 (<|>) [ v <$ pKey k | (k,v) <- Map.toList m ]
+
+-------------------------------------------------------------------------
+-- Dealing with error Message
+-------------------------------------------------------------------------
+
+-- | Convert from Message to anything using a function taking as String position, expected symbol and action taken respectively
+fromMessage :: (Show s, Eq s) => (p -> String -> String -> x) -> Message s p -> x
+fromMessage f (Msg e p a) = f p (show e) (show a)
 
diff --git a/uhc-util.cabal b/uhc-util.cabal
--- a/uhc-util.cabal
+++ b/uhc-util.cabal
@@ -1,5 +1,5 @@
 Name:				uhc-util
-Version:			0.1.3.2
+Version:			0.1.3.5
 cabal-version:      >= 1.6
 License:			BSD3
 Copyright:			Utrecht University, Department of Information and Computing Sciences, Software Technology group
@@ -21,7 +21,7 @@
   Build-Depends:
     base >= 4 && < 5,
     mtl >= 2,
-    fgl >= 5.4,
+    fgl >= 5.4 && < 5.5,
     hashable >= 1.1,
     containers >= 0.4,
     directory >= 1.1,
@@ -61,4 +61,4 @@
   Ghc-Options:		
   HS-Source-Dirs:     	src
   Build-Tools:		
-  Extensions:			
+  Extensions: NoMagicHash		
