diff --git a/Language/Haskell/Tools/AST/Helpers.hs b/Language/Haskell/Tools/AST/Helpers.hs
--- a/Language/Haskell/Tools/AST/Helpers.hs
+++ b/Language/Haskell/Tools/AST/Helpers.hs
@@ -24,6 +24,8 @@
 import Language.Haskell.Tools.AST.Ann
 import Language.Haskell.Tools.AST.Representation.Modules
 import Language.Haskell.Tools.AST.Representation.Decls
+import Language.Haskell.Tools.AST.Representation.Patterns
+import Language.Haskell.Tools.AST.Representation.Exprs
 import Language.Haskell.Tools.AST.Representation.Binds
 import Language.Haskell.Tools.AST.Representation.Types
 import Language.Haskell.Tools.AST.Representation.Names
@@ -56,8 +58,10 @@
         typeParamsTrav f (Ann a (UTyCtx ctx t)) = Ann a <$> (UTyCtx ctx <$> typeParamsTrav f t)
         typeParamsTrav f (Ann a (UTyParen t)) = Ann a <$> (UTyParen <$> typeParamsTrav f t)
         typeParamsTrav f t = f t
-        
 
+valBindPats :: Simple Traversal (Ann UValueBind dom stage) (Ann UPattern dom stage)
+valBindPats = valBindPat &+& funBindMatches & annList & matchLhs & (matchLhsArgs & annList &+& matchLhsLhs &+& matchLhsRhs)
+
 -- | Access the semantic information of an AST node.
 semantics :: Simple Lens (Ann elem dom stage) (SemanticInfo dom elem)
 semantics = annotation&semanticInfo
@@ -132,4 +136,4 @@
 pattern AnnNothing <- AnnMaybeG _ Nothing
 
 pattern AnnJust :: Ann elem dom stage -> AnnMaybeG elem dom stage
-pattern AnnJust elem <- AnnMaybeG _ (Just elem)
+pattern AnnJust elem <- AnnMaybeG _ (Just elem)
diff --git a/Language/Haskell/Tools/AST/References.hs b/Language/Haskell/Tools/AST/References.hs
--- a/Language/Haskell/Tools/AST/References.hs
+++ b/Language/Haskell/Tools/AST/References.hs
@@ -26,6 +26,7 @@
 $(toASTReferences (makeReferences ''UIESpec))
 $(toASTReferences (makeReferences ''USubSpec))
 $(toASTReferences (makeReferences ''UModulePragma))
+$(toASTReferences (makeReferences ''UFilePragma))
 $(toASTReferences (makeReferences ''UImportDecl))
 $(toASTReferences (makeReferences ''UImportSpec))
 $(toASTReferences (makeReferences ''UImportQualified))
diff --git a/Language/Haskell/Tools/AST/SemaInfoClasses.hs b/Language/Haskell/Tools/AST/SemaInfoClasses.hs
--- a/Language/Haskell/Tools/AST/SemaInfoClasses.hs
+++ b/Language/Haskell/Tools/AST/SemaInfoClasses.hs
@@ -41,7 +41,7 @@
 type HasIdInfo dom = (Domain dom, HasIdInfo' (SemanticInfo dom UQualifiedName))
 
 -- | Infos that may have a typed name that can be extracted
-class HasIdInfo' si where
+class HasNameInfo' si => HasIdInfo' si where
   semanticsId :: si -> Id
 
 instance HasIdInfo' CNameInfo where
diff --git a/haskell-tools-ast.cabal b/haskell-tools-ast.cabal
--- a/haskell-tools-ast.cabal
+++ b/haskell-tools-ast.cabal
@@ -1,5 +1,5 @@
 name:                haskell-tools-ast
-version:             0.3.0.1
+version:             0.4.0.0
 synopsis:            Haskell AST for efficient tooling
 description:         A representation of a Haskell Syntax tree that contain source-related and semantic annotations. These annotations help developer tools to work with the defined program. The source information enables refactoring and program transformation tools to change the source code without losing the original format (layout, comments) of the source. Semantic information helps analyzing the program. The representation is different from the GHC's syntax tree. It contains information from all representations in GHC (different version of syntax trees, lexical and module-level information). The module is split up to put the representation of different language elements into different modules. Additionally, it contains the representation of semantic and source annotations, helper functions and generated instances for the representation of language elements. Because langauge elements may refer each other (there can be a pattern inside an expression in case of a pattern match and an expression inside a pattern if view patterns are enabled), we use hs-boot files to break up dependency cycles.
 
@@ -13,6 +13,7 @@
 cabal-version:       >=1.10
 
 library
+  ghc-options:         -O2
   exposed-modules:     Language.Haskell.Tools.AST
                      , Language.Haskell.Tools.AST.References
                      , Language.Haskell.Tools.AST.Helpers
