diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -30,13 +30,14 @@
     extract (L.TypeSig _ names _) = concatMap extractName names
     extract (L.FunBind _ (L.Match _ name _ _ _ : _)) = extractName name
     extract (L.FunBind _ (L.InfixMatch _ _ name _ _ _ : _)) = extractName name
-    extract (L.PatBind _ pat _ _ _) = extractPat pat
+    extract (L.PatBind _ pat _ _) = extractPat pat
     extract (L.ForImp _ _ _ _ name _) = extractName name
     extract _ = []
 
-    extractDeclHead (L.DHead _ name _) = extractName name
-    extractDeclHead (L.DHInfix _ _ name _) = extractName name
+    extractDeclHead (L.DHead _ name) = extractName name
+    extractDeclHead (L.DHInfix _ _ name) = extractName name
     extractDeclHead (L.DHParen _ head') = extractDeclHead head'
+    extractDeclHead (L.DHApp _ head' _) = extractDeclHead head'
 
     extractPat (L.PVar _ name) = extractName name
     extractPat (L.PApp _ _ pats) = concatMap extractPat pats
@@ -55,7 +56,7 @@
 
     extractFieldDecl (L.FieldDecl _ names _) = concatMap extractName names
 
-    extractGadtDecl (L.GadtDecl _ name _) = extractName name
+    extractGadtDecl (L.GadtDecl _ name _ _) = extractName name
 
     extractClassDecl (L.ClsDecl _ decl) = extract decl
     extractClassDecl (L.ClsDataFam _ _ head _) = extractDeclHead head
@@ -82,19 +83,19 @@
     getQualConDecl (L.QualConDecl _ _ _ (L.RecDecl _ (L.Ident _ name) fields)) = name : concatMap getField fields
     getQualConDecl _ = []
 
-    getGadtDecl (L.GadtDecl _ name _) = getName name
+    getGadtDecl (L.GadtDecl _ name _ _) = getName name
     
     getField (L.FieldDecl _ names _) = concatMap getName names
 
     getClassDecl (L.ClsDecl _ (L.FunBind _ (L.Match _ name _ _ _ : _))) = getName name
-    getClassDecl (L.ClsDecl _ (L.PatBind _ (L.PVar _ name) _ _ _)) = getName name  
+    getClassDecl (L.ClsDecl _ (L.PatBind _ (L.PVar _ name) _ _)) = getName name  
     getClassDecl _ = []
 
     getName (L.Ident _ name) = [name]
     getName _ = []
 
-    nameOfHead (L.DHead _ (L.Ident _ name) _) = Just name
-    nameOfHead (L.DHInfix _ _ (L.Ident _ name) _) = Just name
+    nameOfHead (L.DHead _ (L.Ident _ name)) = Just name
+    nameOfHead (L.DHInfix _ _ (L.Ident _ name)) = Just name
     nameOfHead (L.DHParen _ h) = nameOfHead h
     nameOfHead _ = Nothing
 thingMembers _ _ = []
@@ -108,7 +109,7 @@
 exported :: L.Module L.SrcSpanInfo -> String -> Bool
 exported mod@(L.Module _ (Just (L.ModuleHead _ _ _ (Just (L.ExportSpecList _ specs)))) _ _ _) name = any (matchesSpec name) specs
     where
-    matchesSpec name (L.EVar _ (L.UnQual _ (L.Ident _ name'))) = name == name'
+    matchesSpec name (L.EVar _ _ (L.UnQual _ (L.Ident _ name'))) = name == name'
     matchesSpec name (L.EAbs _ (L.UnQual _ (L.Ident _ name'))) = name == name'
     matchesSpec name (L.EThingAll _ (L.UnQual _ (L.Ident _ name'))) = name == name' || (name `elem` thingMembers mod name')
     matchesSpec name (L.EThingWith _ (L.UnQual _ (L.Ident _ name')) cnames) = name == name' || any (matchesCName name) cnames
@@ -151,7 +152,7 @@
 
         normalExports = modExports db name
 
-        specName (L.IVar _ (L.Ident _ name)) = [name]
+        specName (L.IVar _ _ (L.Ident _ name)) = [name]
         specName (L.IAbs _ (L.Ident _ name)) = [name]
         specName (L.IThingAll _ (L.Ident _ name)) = [name]  -- XXX incorrect, need its member names
         specName (L.IThingWith _ (L.Ident _ name) cnames) = name : concatMap cname cnames
diff --git a/hothasktags.cabal b/hothasktags.cabal
--- a/hothasktags.cabal
+++ b/hothasktags.cabal
@@ -1,5 +1,5 @@
 name: hothasktags
-version: 0.3.2
+version: 0.3.3
 cabal-version: >= 1.6
 build-type: Simple
 author: Luke Palmer <lrpalmer@gmail.com>
@@ -38,7 +38,7 @@
         containers,
         filepath,
         haskell-src-exts >= 1.14,
-        cpphs >= 1.11 && < 1.19,
+        cpphs >= 1.11 && < 1.20,
         cmdargs
     main-is: Main.hs
     ghc-options: -W
