diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,13 +1,18 @@
 Changes
 =======
 
-Version 0.7.0
--------------
+Version 0.8.0
+------------
 
-* Improve annotation performance
 * Relax bounds on aeson
 * Relax bounds on transformers
 * Bugfixes
+* Use haskell-src-exts 1.18
+
+Version 0.7.0
+-------------
+
+* Improve annotation performance
 
 Version 0.6.0
 -------------
diff --git a/haskell-names.cabal b/haskell-names.cabal
--- a/haskell-names.cabal
+++ b/haskell-names.cabal
@@ -1,5 +1,5 @@
 Name:                   haskell-names
-Version:                0.7.0
+Version:                0.8.0
 License:                BSD3
 Author:                 Philipp Schuster, Roman Cheplyaka, Lennart Augustsson
 Maintainer:             Philipp Schuster
@@ -22,6 +22,7 @@
   tests/imports/*.hs
   tests/exports/*.hs.golden
   tests/exports/*.hs
+  tests/environment/Prelude.symbols.golden
 data-files:
   data/baseEnvironment/Control.Applicative.symbols
   data/baseEnvironment/Control.Arrow.symbols
@@ -235,13 +236,13 @@
   Default-Language: Haskell2010
   Build-depends:
       base >= 4 && < 5
-    , haskell-src-exts >= 1.17 && < 1.18
+    , haskell-src-exts >= 1.18 && < 1.19
     , mtl >= 2.2.1 && < 2.3
     , transformers >=0.4.2.0 && < 0.6
     , filepath >= 1.1 && < 1.5
     , containers >= 0.2 && < 0.6
     , uniplate >= 1.5.1 && < 1.7
-    , aeson >= 0.8.0.2 && < 0.12
+    , aeson >= 0.8.0.2 && < 1.1
     , bytestring >= 0.10.4.0 && < 0.11
     , data-lens-light >= 0.1.2.1 && < 0.2
               , traverse-with-class >= 0.2.0.3 && < 0.3
@@ -281,7 +282,8 @@
     run.hs
   Build-depends:
       base >= 4 && < 5
-    , haskell-src-exts >= 1.17 && < 1.18
+    , haskell-names >= 0.8.0 && < 0.9
+    , haskell-src-exts >= 1.18 && < 1.19
     , mtl >= 2.2.1 && < 2.3
     , filepath >= 1.1 && <1.5
     , containers >= 0.2 && < 0.6
@@ -290,5 +292,4 @@
     , filemanip >= 0.3.6.3 && < 0.4
     , pretty-show >= 1.6.1 && < 1.7
     , traverse-with-class >= 0.2.0.3 && < 0.3
-    , haskell-names >= 0.7.0 && < 0.8
 
diff --git a/src/Language/Haskell/Names/Annotated.hs b/src/Language/Haskell/Names/Annotated.hs
--- a/src/Language/Haskell/Names/Annotated.hs
+++ b/src/Language/Haskell/Names/Annotated.hs
@@ -17,10 +17,8 @@
 import Language.Haskell.Names.Open.Instances ()
 import qualified Language.Haskell.Names.GlobalSymbolTable as Global
 import qualified Language.Haskell.Names.LocalSymbolTable as Local
-import Language.Haskell.Names.SyntaxUtils (annName,setAnn)
-import Language.Haskell.Exts.Annotated.Simplify (sQName)
-import Language.Haskell.Exts.Annotated
-import qualified Language.Haskell.Exts.Syntax as UnAnn
+import Language.Haskell.Names.SyntaxUtils (dropAnn, annName,setAnn)
+import Language.Haskell.Exts
 import Data.Proxy
 import Data.Lens.Light
 import Data.Typeable (
@@ -97,7 +95,7 @@
 
   checkUniqueness symbols = case symbols of
     [] -> ScopeError (ENotInScope qname)
-    [symbol] -> GlobalSymbol symbol (sQName qname)
+    [symbol] -> GlobalSymbol symbol (dropAnn qname)
     _ -> ScopeError (EAmbiguous qname symbols)
 
 
@@ -124,13 +122,13 @@
 
   checkUniqueness qname symbols = case symbols of
     [] -> ScopeError (ENotInScope qname)
-    [symbol] -> GlobalSymbol symbol (sQName qname)
+    [symbol] -> GlobalSymbol symbol (dropAnn qname)
     _ -> ScopeError (EAmbiguous qname symbols)
 
 
-qualifyName :: Maybe UnAnn.ModuleName -> Name l -> QName l
+qualifyName :: Maybe (ModuleName ()) -> Name l -> QName l
 qualifyName Nothing n = UnQual (ann n) n
-qualifyName (Just (UnAnn.ModuleName moduleName)) n =
+qualifyName (Just (ModuleName () moduleName)) n =
   Qual (ann n) annotatedModuleName n where
     annotatedModuleName = ModuleName (ann n) moduleName
 
diff --git a/src/Language/Haskell/Names/Environment.hs b/src/Language/Haskell/Names/Environment.hs
--- a/src/Language/Haskell/Names/Environment.hs
+++ b/src/Language/Haskell/Names/Environment.hs
@@ -13,9 +13,8 @@
   ) where
 
 import Language.Haskell.Names.Types (Environment, Symbol(..))
-import Language.Haskell.Exts (ModuleName(ModuleName),prettyPrint,Name)
-import Language.Haskell.Names.SyntaxUtils (stringToName,nameToString,annName)
-import Language.Haskell.Exts.Annotated.Simplify (sName)
+import Language.Haskell.Exts (ModuleName(ModuleName),Name,prettyPrint)
+import Language.Haskell.Names.SyntaxUtils (stringToName,nameToString,dropAnn, annName)
 import qualified Data.ByteString.Lazy as BS (readFile, writeFile, pack)
 import Data.Aeson
 import Data.Monoid
@@ -49,7 +48,7 @@
   deriving (Typeable, Show)
 instance Exception SymbolsFileException
 
-prettyName :: Name -> String
+prettyName :: Name () -> String
 prettyName = nameToString . annName
 
 instance ToJSON Symbol where
@@ -86,13 +85,13 @@
   DataFam {} -> "dataFamily"
   Class   {} -> "class"
 
-parseName :: String -> Name
-parseName = sName . stringToName
+parseName :: String -> Name ()
+parseName = dropAnn . stringToName
 
 instance FromJSON Symbol where
   parseJSON (Object v) = do
     entity <- v .: "entity"
-    symbolmodule <- ModuleName <$> v .: "module"
+    symbolmodule <- ModuleName () <$> v .: "module"
     symbolname <- parseName <$> v .: "name"
 
     case entity :: String of
@@ -133,5 +132,5 @@
     return (moduleName, symbols))
   return (Map.fromList moduleSymbols)
 
-baseModules :: [ModuleName]
-baseModules = map ModuleName ["Control.Applicative","Control.Arrow","Control.Category","Control.Concurrent.Chan","Control.Concurrent.MVar","Control.Concurrent.QSem","Control.Concurrent.QSemN","Control.Concurrent","Control.Exception.Base","Control.Exception","Control.Monad.Fix","Control.Monad.Instances","Control.Monad.ST.Imp","Control.Monad.ST.Lazy.Imp","Control.Monad.ST.Lazy.Safe","Control.Monad.ST.Lazy.Unsafe","Control.Monad.ST.Lazy","Control.Monad.ST.Safe","Control.Monad.ST.Strict","Control.Monad.ST.Unsafe","Control.Monad.ST","Control.Monad.Zip","Control.Monad","Data.Bits","Data.Bool","Data.Char","Data.Complex","Data.Data","Data.Dynamic","Data.Either","Data.Eq","Data.Fixed","Data.Foldable","Data.Function","Data.Functor","Data.IORef","Data.Int","Data.Ix","Data.List","Data.Maybe","Data.Monoid","Data.OldTypeable.Internal","Data.OldTypeable","Data.Ord","Data.Ratio","Data.STRef.Lazy","Data.STRef.Strict","Data.STRef","Data.String","Data.Traversable","Data.Tuple","Data.Typeable.Internal","Data.Typeable","Data.Unique","Data.Version","Data.Word","Debug.Trace","Foreign.C.Error","Foreign.C.String","Foreign.C.Types","Foreign.C","Foreign.Concurrent","Foreign.ForeignPtr.Imp","Foreign.ForeignPtr.Safe","Foreign.ForeignPtr.Unsafe","Foreign.ForeignPtr","Foreign.Marshal.Alloc","Foreign.Marshal.Array","Foreign.Marshal.Error","Foreign.Marshal.Pool","Foreign.Marshal.Safe","Foreign.Marshal.Unsafe","Foreign.Marshal.Utils","Foreign.Marshal","Foreign.Ptr","Foreign.Safe","Foreign.StablePtr","Foreign.Storable","Foreign","GHC.Arr","GHC.Base","GHC.Char","GHC.Conc.IO","GHC.Conc.Signal","GHC.Conc.Sync","GHC.Conc","GHC.ConsoleHandler","GHC.Constants","GHC.Desugar","GHC.Enum","GHC.Environment","GHC.Err","GHC.Event.Array","GHC.Event.Clock","GHC.Event.Control","GHC.Event.EPoll","GHC.Event.IntMap","GHC.Event.Internal","GHC.Event.KQueue","GHC.Event.Manager","GHC.Event.PSQ","GHC.Event.Poll","GHC.Event.Thread","GHC.Event.TimerManager","GHC.Event.Unique","GHC.Event","GHC.Exception","GHC.Exts","GHC.Fingerprint.Type","GHC.Fingerprint","GHC.Float.ConversionUtils","GHC.Float.RealFracMethods","GHC.Float","GHC.Foreign","GHC.ForeignPtr","GHC.GHCi","GHC.Generics","GHC.IO.Buffer","GHC.IO.BufferedIO","GHC.IO.Device","GHC.IO.Encoding.CodePage","GHC.IO.Encoding.Failure","GHC.IO.Encoding.Iconv","GHC.IO.Encoding.Latin1","GHC.IO.Encoding.Types","GHC.IO.Encoding.UTF16","GHC.IO.Encoding.UTF32","GHC.IO.Encoding.UTF8","GHC.IO.Encoding","GHC.IO.Exception","GHC.IO.FD","GHC.IO.Handle.FD","GHC.IO.Handle.Internals","GHC.IO.Handle.Text","GHC.IO.Handle.Types","GHC.IO.Handle","GHC.IO.IOMode","GHC.IO","GHC.IOArray","GHC.IORef","GHC.IP","GHC.Int","GHC.List","GHC.MVar","GHC.Num","GHC.PArr","GHC.Pack","GHC.Profiling","GHC.Ptr","GHC.Read","GHC.Real","GHC.ST","GHC.STRef","GHC.Show","GHC.Stable","GHC.Stack","GHC.Stats","GHC.Storable","GHC.TopHandler","GHC.TypeLits","GHC.Unicode","GHC.Weak","GHC.Word","Numeric","Prelude","System.CPUTime","System.Console.GetOpt","System.Environment.ExecutablePath","System.Environment","System.Exit","System.IO.Error","System.IO.Unsafe","System.IO","System.Info","System.Mem.StableName","System.Mem.Weak","System.Mem","System.Posix.Internals","System.Posix.Types","System.Timeout","Text.ParserCombinators.ReadP","Text.ParserCombinators.ReadPrec","Text.Printf","Text.Read.Lex","Text.Read","Text.Show.Functions","Text.Show","Unsafe.Coerce","GHC.CString","GHC.Classes","GHC.Debug","GHC.IntWord64","GHC.Magic","GHC.Prim","GHC.PrimopWrappers","GHC.Tuple","GHC.Types","GHC.Integer.Logarithms.Internals","GHC.Integer.Logarithms","GHC.Integer.Simple.Internals","GHC.Integer.Type","GHC.Integer"]
+baseModules :: [ModuleName ()]
+baseModules = map (ModuleName ()) ["Control.Applicative","Control.Arrow","Control.Category","Control.Concurrent.Chan","Control.Concurrent.MVar","Control.Concurrent.QSem","Control.Concurrent.QSemN","Control.Concurrent","Control.Exception.Base","Control.Exception","Control.Monad.Fix","Control.Monad.Instances","Control.Monad.ST.Imp","Control.Monad.ST.Lazy.Imp","Control.Monad.ST.Lazy.Safe","Control.Monad.ST.Lazy.Unsafe","Control.Monad.ST.Lazy","Control.Monad.ST.Safe","Control.Monad.ST.Strict","Control.Monad.ST.Unsafe","Control.Monad.ST","Control.Monad.Zip","Control.Monad","Data.Bits","Data.Bool","Data.Char","Data.Complex","Data.Data","Data.Dynamic","Data.Either","Data.Eq","Data.Fixed","Data.Foldable","Data.Function","Data.Functor","Data.IORef","Data.Int","Data.Ix","Data.List","Data.Maybe","Data.Monoid","Data.OldTypeable.Internal","Data.OldTypeable","Data.Ord","Data.Ratio","Data.STRef.Lazy","Data.STRef.Strict","Data.STRef","Data.String","Data.Traversable","Data.Tuple","Data.Typeable.Internal","Data.Typeable","Data.Unique","Data.Version","Data.Word","Debug.Trace","Foreign.C.Error","Foreign.C.String","Foreign.C.Types","Foreign.C","Foreign.Concurrent","Foreign.ForeignPtr.Imp","Foreign.ForeignPtr.Safe","Foreign.ForeignPtr.Unsafe","Foreign.ForeignPtr","Foreign.Marshal.Alloc","Foreign.Marshal.Array","Foreign.Marshal.Error","Foreign.Marshal.Pool","Foreign.Marshal.Safe","Foreign.Marshal.Unsafe","Foreign.Marshal.Utils","Foreign.Marshal","Foreign.Ptr","Foreign.Safe","Foreign.StablePtr","Foreign.Storable","Foreign","GHC.Arr","GHC.Base","GHC.Char","GHC.Conc.IO","GHC.Conc.Signal","GHC.Conc.Sync","GHC.Conc","GHC.ConsoleHandler","GHC.Constants","GHC.Desugar","GHC.Enum","GHC.Environment","GHC.Err","GHC.Event.Array","GHC.Event.Clock","GHC.Event.Control","GHC.Event.EPoll","GHC.Event.IntMap","GHC.Event.Internal","GHC.Event.KQueue","GHC.Event.Manager","GHC.Event.PSQ","GHC.Event.Poll","GHC.Event.Thread","GHC.Event.TimerManager","GHC.Event.Unique","GHC.Event","GHC.Exception","GHC.Exts","GHC.Fingerprint.Type","GHC.Fingerprint","GHC.Float.ConversionUtils","GHC.Float.RealFracMethods","GHC.Float","GHC.Foreign","GHC.ForeignPtr","GHC.GHCi","GHC.Generics","GHC.IO.Buffer","GHC.IO.BufferedIO","GHC.IO.Device","GHC.IO.Encoding.CodePage","GHC.IO.Encoding.Failure","GHC.IO.Encoding.Iconv","GHC.IO.Encoding.Latin1","GHC.IO.Encoding.Types","GHC.IO.Encoding.UTF16","GHC.IO.Encoding.UTF32","GHC.IO.Encoding.UTF8","GHC.IO.Encoding","GHC.IO.Exception","GHC.IO.FD","GHC.IO.Handle.FD","GHC.IO.Handle.Internals","GHC.IO.Handle.Text","GHC.IO.Handle.Types","GHC.IO.Handle","GHC.IO.IOMode","GHC.IO","GHC.IOArray","GHC.IORef","GHC.IP","GHC.Int","GHC.List","GHC.MVar","GHC.Num","GHC.PArr","GHC.Pack","GHC.Profiling","GHC.Ptr","GHC.Read","GHC.Real","GHC.ST","GHC.STRef","GHC.Show","GHC.Stable","GHC.Stack","GHC.Stats","GHC.Storable","GHC.TopHandler","GHC.TypeLits","GHC.Unicode","GHC.Weak","GHC.Word","Numeric","Prelude","System.CPUTime","System.Console.GetOpt","System.Environment.ExecutablePath","System.Environment","System.Exit","System.IO.Error","System.IO.Unsafe","System.IO","System.Info","System.Mem.StableName","System.Mem.Weak","System.Mem","System.Posix.Internals","System.Posix.Types","System.Timeout","Text.ParserCombinators.ReadP","Text.ParserCombinators.ReadPrec","Text.Printf","Text.Read.Lex","Text.Read","Text.Show.Functions","Text.Show","Unsafe.Coerce","GHC.CString","GHC.Classes","GHC.Debug","GHC.IntWord64","GHC.Magic","GHC.Prim","GHC.PrimopWrappers","GHC.Tuple","GHC.Types","GHC.Integer.Logarithms.Internals","GHC.Integer.Logarithms","GHC.Integer.Simple.Internals","GHC.Integer.Type","GHC.Integer"]
diff --git a/src/Language/Haskell/Names/Exports.hs b/src/Language/Haskell/Names/Exports.hs
--- a/src/Language/Haskell/Names/Exports.hs
+++ b/src/Language/Haskell/Names/Exports.hs
@@ -10,9 +10,7 @@
 import Control.Monad
 import Control.Monad.Writer
 import Data.Data
-import qualified Language.Haskell.Exts as UnAnn (QName(Qual,UnQual))
-import Language.Haskell.Exts.Annotated.Simplify (sQName,sModuleName)
-import Language.Haskell.Exts.Annotated
+import Language.Haskell.Exts
 import Language.Haskell.Names.Types
 import Language.Haskell.Names.ScopeUtils
 import Language.Haskell.Names.SyntaxUtils
@@ -34,8 +32,7 @@
   case annotateExportSpec globalTable exportSpec of
     EVar (Scoped (Export symbols) _) _ -> symbols
     EAbs (Scoped (Export symbols) _) _ _ -> symbols
-    EThingAll (Scoped (Export symbols) _) _ -> symbols
-    EThingWith (Scoped (Export symbols) _) _ _ -> symbols
+    EThingWith (Scoped (Export symbols) _) _ _ _ -> symbols
     EModuleContents (Scoped (Export symbols) _) _ -> symbols
     _ -> []
 
@@ -52,16 +49,16 @@
     case Global.lookupValue qn globalTable of
       [] -> scopeError (ENotInScope qn) exportSpec
       [symbol] -> EVar (Scoped (Export [symbol]) l)
-            (Scoped (GlobalSymbol symbol (sQName qn)) <$> qn)
+            (Scoped (GlobalSymbol symbol (dropAnn qn)) <$> qn)
       symbols -> scopeError (EAmbiguous qn symbols) exportSpec
   EAbs l ns qn ->
     case Global.lookupType qn globalTable of
       [] -> scopeError (ENotInScope qn) exportSpec
       [symbol] -> EAbs (Scoped (Export [symbol]) l)
             (noScope ns)
-            (Scoped (GlobalSymbol symbol (sQName qn)) <$> qn)
+            (Scoped (GlobalSymbol symbol (dropAnn qn)) <$> qn)
       symbols -> scopeError (EAmbiguous qn symbols) exportSpec
-  EThingAll l qn ->
+  EThingWith l w@(EWildcard _ _) qn _ ->
     case Global.lookupType qn globalTable of
       [] -> scopeError (ENotInScope qn) exportSpec
       [symbol] ->
@@ -73,9 +70,9 @@
               return subSymbol)
           s = [symbol] <> subSymbols
         in
-          EThingAll (Scoped (Export s) l) (Scoped (GlobalSymbol symbol (sQName qn)) <$> qn)
+          EThingWith (Scoped (Export s) l) (fmap (Scoped None) w) (Scoped (GlobalSymbol symbol (dropAnn qn)) <$> qn) []
       symbols -> scopeError (EAmbiguous qn symbols) exportSpec
-  EThingWith l qn cns ->
+  EThingWith l w@(NoWildcard {}) qn cns ->
     case Global.lookupType qn globalTable of
       [] -> scopeError (ENotInScope qn) exportSpec
       [symbol] ->
@@ -88,7 +85,7 @@
               cns
           s = [symbol] <> subSymbols
         in
-          EThingWith (Scoped (Export s) l) (Scoped (GlobalSymbol symbol (sQName qn)) <$> qn) cns'
+          EThingWith (Scoped (Export s) l) (fmap (Scoped None) w) (Scoped (GlobalSymbol symbol (dropAnn qn)) <$> qn) cns'
       symbols -> scopeError (EAmbiguous qn symbols) exportSpec
   -- FIXME ambiguity check
   EModuleContents _ modulename -> Scoped (Export exportedSymbols) <$> exportSpec where
@@ -96,11 +93,11 @@
       exportedSymbols = Set.toList (Set.intersection inScopeQualified inScopeUnqualified)
 
       inScopeQualified = Set.fromList (do
-          (UnAnn.Qual prefix _, symbols) <- Map.toList globalTable
-          guard (prefix == sModuleName modulename)
+          (Qual _ prefix _, symbols) <- Map.toList globalTable
+          guard (prefix == dropAnn modulename)
           symbols)
 
       inScopeUnqualified = Set.fromList (do
-          (UnAnn.UnQual _, symbols) <- Map.toList globalTable
+          (UnQual _ _, symbols) <- Map.toList globalTable
           symbols)
 
diff --git a/src/Language/Haskell/Names/GetBound.hs b/src/Language/Haskell/Names/GetBound.hs
--- a/src/Language/Haskell/Names/GetBound.hs
+++ b/src/Language/Haskell/Names/GetBound.hs
@@ -8,8 +8,7 @@
 import Data.Generics.Uniplate.Data
 import Data.Data
 
-import qualified Language.Haskell.Exts as UnAnn
-import Language.Haskell.Exts.Annotated
+import Language.Haskell.Exts
 import Language.Haskell.Names.RecordWildcards
 import Language.Haskell.Names.SyntaxUtils
 import qualified Language.Haskell.Names.GlobalSymbolTable as Global
@@ -144,7 +143,7 @@
       dropExp (PViewPat _ _ x) = x
       dropExp x = x
 
-      getRecVars :: [UnAnn.Name] -> PatField l -> [Name l]
+      getRecVars :: [Name ()] -> PatField l -> [Name l]
       getRecVars _ PFieldPat {} = [] -- this is already found by the generic algorithm
       getRecVars _ (PFieldPun _ qn) = [qNameToName qn]
       getRecVars elidedFields (PFieldWildcard l) = map (setAnn l . annName) elidedFields
diff --git a/src/Language/Haskell/Names/GlobalSymbolTable.hs b/src/Language/Haskell/Names/GlobalSymbolTable.hs
--- a/src/Language/Haskell/Names/GlobalSymbolTable.hs
+++ b/src/Language/Haskell/Names/GlobalSymbolTable.hs
@@ -2,12 +2,7 @@
 -- | This module is designed to be imported qualified.
 module Language.Haskell.Names.GlobalSymbolTable where
 
-import Language.Haskell.Exts (
-    QName)
-import qualified Language.Haskell.Exts.Annotated as Ann (
-    QName)
-import Language.Haskell.Exts.Annotated.Simplify (
-    sQName)
+import Language.Haskell.Exts hiding (NewType)
 
 import Data.Map (
     Map)
@@ -19,9 +14,10 @@
 import Data.Maybe (fromMaybe)
 
 import Language.Haskell.Names.Types
+import Language.Haskell.Names.SyntaxUtils (dropAnn)
 
 -- | Global symbol table — contains names declared somewhere at the top level.
-type Table = Map QName [Symbol]
+type Table = Map (QName ()) [Symbol]
 
 -- | Empty global symbol table.
 empty :: Table
@@ -31,17 +27,17 @@
 mergeTables :: Table -> Table -> Table
 mergeTables = Map.unionWith List.union
 
-lookupValue :: Ann.QName l -> Table -> [Symbol]
+lookupValue :: QName l -> Table -> [Symbol]
 lookupValue qn = filter isValue . lookupName qn
 
-lookupType :: Ann.QName l -> Table -> [Symbol]
+lookupType :: QName l -> Table -> [Symbol]
 lookupType qn = filter isType . lookupName qn
 
-lookupMethodOrAssociate :: Ann.QName l -> Table -> [Symbol]
+lookupMethodOrAssociate :: QName l -> Table -> [Symbol]
 lookupMethodOrAssociate qn = filter isMethodOrAssociated . lookupName qn
 
-lookupName :: Ann.QName l -> Table -> [Symbol]
-lookupName qn table = fromMaybe [] (Map.lookup (sQName qn) table)
+lookupName ::  QName l -> Table -> [Symbol]
+lookupName qn table = fromMaybe [] (Map.lookup (dropAnn qn) table)
 
 isValue :: Symbol -> Bool
 isValue symbol = case symbol of
@@ -68,6 +64,6 @@
     DataFam {} -> True
     _ -> False
 
-fromList :: [(QName,Symbol)] -> Table
+fromList :: [(QName (),Symbol)] -> Table
 fromList = Map.fromListWith List.union . map (second (:[]))
 
diff --git a/src/Language/Haskell/Names/Imports.hs b/src/Language/Haskell/Names/Imports.hs
--- a/src/Language/Haskell/Names/Imports.hs
+++ b/src/Language/Haskell/Names/Imports.hs
@@ -13,12 +13,8 @@
 
 import Control.Monad.Writer
 import Data.Map as Map (lookup)
-import qualified Language.Haskell.Exts as UnAnn (
-  ModuleName(ModuleName))
-import Language.Haskell.Exts.Annotated.Simplify (
-  sName,sModuleName)
-import Language.Haskell.Exts.Annotated (
-  Module(Module), ModuleName,ImportDecl(..),
+import Language.Haskell.Exts (
+  Module(Module), ModuleName(ModuleName), ImportDecl(..),
   ann,ImportSpecList(..),ImportSpec(..),Name(..),
   Annotated)
 import Language.Haskell.Exts.Extension (
@@ -46,26 +42,26 @@
       DisableExtension ImplicitPrelude `elem` extensions || isPreludeImported
     isPreludeImported = not (null (do
       importDecl <- importDecls
-      guard (sModuleName (importModule importDecl) == preludeModuleName)))
+      guard (dropAnn (importModule importDecl) == preludeModuleName)))
     preludeSymbols = fromMaybe [] (Map.lookup preludeModuleName environment)
     (_, extensions) = getModuleExtensions modul
 
-preludeModuleName :: UnAnn.ModuleName
-preludeModuleName = UnAnn.ModuleName "Prelude"
+preludeModuleName :: ModuleName ()
+preludeModuleName = ModuleName () "Prelude"
 
 importDeclTable :: Environment -> ImportDecl l -> Global.Table
 importDeclTable environment importDecl =
   computeSymbolTable isQualified moduleName importSymbols where
     ImportDecl _ importModuleName isQualified _ _ _ maybeAs maybeImportSpecList =
       importDecl
-    moduleName = sModuleName (fromMaybe importModuleName maybeAs)
+    moduleName = dropAnn (fromMaybe importModuleName maybeAs)
     importSymbols = case maybeImportSpecList of
       Nothing ->
         importModuleSymbols
       Just importSpecList ->
         importSpecListSymbols importModuleName importModuleSymbols importSpecList
     importModuleSymbols = fromMaybe [] (
-      Map.lookup (sModuleName importModuleName) environment)
+      Map.lookup (dropAnn importModuleName) environment)
 
 
 importSpecListSymbols :: ModuleName l -> [Symbol] -> ImportSpecList l -> [Symbol]
@@ -101,7 +97,7 @@
     maybeAs
     maybeImportSpecList = importDecl
 
-  importDecl' = case Map.lookup (sModuleName importModuleName) environment of
+  importDecl' = case Map.lookup (dropAnn importModuleName) environment of
     Nothing -> scopeError (EModNotFound importModuleName) importDecl
     Just symbols ->
       ImportDecl
@@ -123,7 +119,7 @@
               ScopeError e
             _ -> Import table
           table = computeSymbolTable isQualified qualificationName importSymbols
-          qualificationName = sModuleName (fromMaybe importModuleName maybeAs)
+          qualificationName = dropAnn (fromMaybe importModuleName maybeAs)
           importSymbols =
             maybe
               symbols
@@ -237,7 +233,7 @@
           cns'
   where
     (~~) :: Symbol -> Name l -> Bool
-    symbol ~~ name = symbolName symbol == sName name
+    symbol ~~ name = symbolName symbol == dropAnn name
 
     isConstructor :: Symbol -> Bool
     isConstructor Constructor {} = True
diff --git a/src/Language/Haskell/Names/LocalSymbolTable.hs b/src/Language/Haskell/Names/LocalSymbolTable.hs
--- a/src/Language/Haskell/Names/LocalSymbolTable.hs
+++ b/src/Language/Haskell/Names/LocalSymbolTable.hs
@@ -9,23 +9,22 @@
 
 import qualified Data.Map as Map
 import Data.Monoid
-import Language.Haskell.Exts (Name)
-import Language.Haskell.Exts.Annotated.Simplify (sName)
-import qualified Language.Haskell.Exts.Annotated as Ann
+import Language.Haskell.Exts
+import Language.Haskell.Names.SyntaxUtils (dropAnn)
 import Language.Haskell.Names.Types
 
 -- | Local symbol table — contains locally bound names
-newtype Table = Table (Map.Map Name Ann.SrcLoc)
+newtype Table = Table (Map.Map (Name ()) SrcLoc)
   deriving Monoid
 
-addValue :: Ann.SrcInfo l => Ann.Name l -> Table -> Table
+addValue :: SrcInfo l => Name l -> Table -> Table
 addValue n (Table vs) =
-  Table (Map.insert (sName n) (Ann.getPointLoc $ Ann.ann n) vs)
+  Table (Map.insert (dropAnn n) (getPointLoc $ ann n) vs)
 
-lookupValue :: Ann.QName l -> Table -> Either (Error l) Ann.SrcLoc
-lookupValue qn@(Ann.UnQual _ n) (Table vs) =
+lookupValue :: QName l -> Table -> Either (Error l) SrcLoc
+lookupValue qn@(UnQual _ n) (Table vs) =
   maybe (Left $ ENotInScope qn) Right $
-    Map.lookup (sName n) vs
+    Map.lookup (dropAnn n) vs
 lookupValue qn _ = Left $ ENotInScope qn
 
 empty :: Table
diff --git a/src/Language/Haskell/Names/ModuleSymbols.hs b/src/Language/Haskell/Names/ModuleSymbols.hs
--- a/src/Language/Haskell/Names/ModuleSymbols.hs
+++ b/src/Language/Haskell/Names/ModuleSymbols.hs
@@ -10,10 +10,8 @@
 import Data.Data
 import qualified Data.Map as Map
 
-import qualified Language.Haskell.Exts as UnAnn (ModuleName,Name)
-import Language.Haskell.Exts.Annotated hiding (NewType)
-import Language.Haskell.Exts.Annotated.Simplify (sModuleName,sName)
-import qualified Language.Haskell.Exts.Annotated as Syntax (DataOrNew(NewType))
+import Language.Haskell.Exts hiding (DataOrNew(NewType))
+import qualified Language.Haskell.Exts as Syntax (DataOrNew(NewType))
 import Language.Haskell.Names.Types
 import qualified Language.Haskell.Names.GlobalSymbolTable as Global
 import Language.Haskell.Names.SyntaxUtils
@@ -28,7 +26,7 @@
   -> Module l
   -> Global.Table
 moduleTable impTbl m = Global.mergeTables impTbl (computeSymbolTable
-  False (sModuleName (getModuleName m)) (moduleSymbols impTbl m))
+  False (dropAnn (getModuleName m)) (moduleSymbols impTbl m))
 
 -- | Compute the symbols that are defined in the given module.
 --
@@ -53,7 +51,7 @@
 getTopDeclSymbols impTbl modulename d = (case d of
     TypeDecl _ dh _ -> [declHeadSymbol Type dh]
 
-    TypeFamDecl _ dh _ -> [TypeFam (sModuleName modulename) (sName (getDeclHeadName dh)) Nothing]
+    TypeFamDecl _ dh _ _ -> [TypeFam (dropAnn modulename) (dropAnn (getDeclHeadName dh)) Nothing]
 
     DataDecl _ dataOrNew _ dh qualConDecls _ -> declHeadSymbol (dataOrNewCon dataOrNew) dh : infos where
 
@@ -72,27 +70,27 @@
 
         infos = constructorsToInfos modulename dq cons          
 
-    DataFamDecl _ _ dh _ -> [DataFam (sModuleName modulename) (sName (getDeclHeadName dh)) Nothing]
+    DataFamDecl _ _ dh _ -> [DataFam (dropAnn modulename) (dropAnn (getDeclHeadName dh)) Nothing]
 
     ClassDecl _ _ declHead _ mds -> classSymbol : typeFamilySymbols ++ dataFamilySymbols ++ methodSymbols where
         cdecls = fromMaybe [] mds
         classSymbol = declHeadSymbol Class declHead
         typeFamilySymbols = do
-            ClsTyFam   _   familyHead _ <- cdecls
-            return (TypeFam (sModuleName modulename) (sName (getDeclHeadName familyHead)) (Just (sName (getDeclHeadName declHead))))
+            ClsTyFam   _   familyHead _ _ <- cdecls
+            return (TypeFam (dropAnn modulename) (dropAnn (getDeclHeadName familyHead)) (Just (dropAnn (getDeclHeadName declHead))))
         dataFamilySymbols = do
             ClsDataFam _ _ familyHead _ <- cdecls
-            return (DataFam (sModuleName modulename) (sName (getDeclHeadName familyHead)) (Just (sName (getDeclHeadName declHead))))
+            return (DataFam (dropAnn modulename) (dropAnn (getDeclHeadName familyHead)) (Just (dropAnn (getDeclHeadName declHead))))
         methodSymbols = do
             methodName <- getBound impTbl d
-            return (Method (sModuleName modulename) (sName methodName) (sName (getDeclHeadName declHead)))
+            return (Method (dropAnn modulename) (dropAnn methodName) (dropAnn (getDeclHeadName declHead)))
 
-    FunBind _ ms -> [ Value (sModuleName modulename) (sName vn) ] where
+    FunBind _ ms -> [ Value (dropAnn modulename) (dropAnn vn) ] where
       vn : _ = getBound impTbl ms
 
-    PatBind _ p _ _ -> [ Value (sModuleName modulename) (sName vn) | vn <- getBound impTbl p ]
+    PatBind _ p _ _ -> [ Value (dropAnn modulename) (dropAnn vn) | vn <- getBound impTbl p ]
 
-    ForImp _ _ _ _ fn _ -> [ Value (sModuleName modulename) (sName fn)]
+    ForImp _ _ _ _ fn _ -> [ Value (dropAnn modulename) (dropAnn fn)]
 
     DataInsDecl _ _ typ qualConDecls _ -> constructorsToInfos modulename (typeOuterName typ) (qualConDeclNames qualConDecls)
 
@@ -105,7 +103,7 @@
 
     _ -> [])
         where
-            declHeadSymbol c dh = c (sModuleName modulename) (sName (getDeclHeadName dh))
+            declHeadSymbol c dh = c (dropAnn modulename) (dropAnn (getDeclHeadName dh))
 
 -- | Takes a type name and a list of constructor names paired with selector names. Returns
 --   all symbols i.e. constructors and selectors.
@@ -113,7 +111,7 @@
 constructorsToInfos modulename typename constructors = conInfos ++ selInfos where
         conInfos = do
             (constructorname,_) <- constructors
-            return (Constructor (sModuleName modulename) (sName constructorname) (sName typename))
+            return (Constructor (dropAnn modulename) (dropAnn constructorname) (dropAnn typename))
 
         selectorsMap = Map.fromListWith (++) (do
             (constructorname,selectornames) <- constructors
@@ -124,7 +122,7 @@
             (_,selectornames) <- constructors
             selectorname <- selectornames
             constructornames <- maybeToList (Map.lookup (nameToString selectorname) selectorsMap)
-            return (Selector (sModuleName modulename) (sName selectorname) (sName typename) (map sName constructornames))
+            return (Selector (dropAnn modulename) (dropAnn selectorname) (dropAnn typename) (map dropAnn constructornames))
 
 typeOuterName :: Type l -> Name l
 typeOuterName t = case t of
@@ -134,7 +132,7 @@
     TyParen _ typ -> typeOuterName typ
     TyInfix _ _ qname _ -> qNameToName qname
     TyKind _ typ _ -> typeOuterName typ
-    TyBang _ _ typ -> typeOuterName typ
+    TyBang _ _ _ typ -> typeOuterName typ
     _ -> error "illegal data family in data instance"
 
 qualConDeclNames :: [QualConDecl l] -> [(Name l,[Name l])]
@@ -147,5 +145,5 @@
             return (n , [f | FieldDecl _ fNames _ <- fields, f <- fNames])
 
 
-dataOrNewCon :: Syntax.DataOrNew l -> UnAnn.ModuleName -> UnAnn.Name -> Symbol
+dataOrNewCon :: Syntax.DataOrNew l -> ModuleName () -> Name () -> Symbol
 dataOrNewCon dataOrNew = case dataOrNew of DataType {} -> Data; Syntax.NewType {} -> NewType
diff --git a/src/Language/Haskell/Names/Open/Base.hs b/src/Language/Haskell/Names/Open/Base.hs
--- a/src/Language/Haskell/Names/Open/Base.hs
+++ b/src/Language/Haskell/Names/Open/Base.hs
@@ -11,8 +11,7 @@
 import qualified Language.Haskell.Names.LocalSymbolTable as Local
 import Language.Haskell.Names.GetBound
 import Language.Haskell.Names.RecordWildcards
-import Language.Haskell.Exts.Annotated
-import qualified Language.Haskell.Exts.Syntax as UnAnn
+import Language.Haskell.Exts
 import Control.Applicative
 import Control.Monad.Identity
 import Data.List
@@ -48,18 +47,18 @@
 -- If we enter an instance with a qualified class name we have to
 -- remember the qualification to resolve method names.
 data Scope = Scope
-  { _moduName :: UnAnn.ModuleName
+  { _moduName :: ModuleName ()
   , _gTable :: Global.Table
   , _lTable :: Local.Table
   , _nameCtx :: NameContext
-  , _instQual :: Maybe UnAnn.ModuleName
+  , _instQual :: Maybe (ModuleName ())
   , _wcNames :: WcNames
   }
 
 makeLens ''Scope
 
 -- | Create an initial scope
-initialScope :: UnAnn.ModuleName -> Global.Table -> Scope
+initialScope :: ModuleName () -> Global.Table -> Scope
 initialScope moduleName tbl = Scope moduleName tbl Local.empty Other Nothing []
 
 -- | Merge local tables of two scopes. The other fields of the scopes are
@@ -158,5 +157,5 @@
 exprUT :: Scope -> Scope
 exprUT = setNameCtx ReferenceUT
 
-instQ :: Maybe UnAnn.ModuleName -> Scope -> Scope
+instQ :: Maybe (ModuleName ()) -> Scope -> Scope
 instQ m = setL instQual m
diff --git a/src/Language/Haskell/Names/Open/Derived.hs b/src/Language/Haskell/Names/Open/Derived.hs
--- a/src/Language/Haskell/Names/Open/Derived.hs
+++ b/src/Language/Haskell/Names/Open/Derived.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, FlexibleInstances, ConstraintKinds, UndecidableInstances #-}
 module Language.Haskell.Names.Open.Derived where
 
-import Language.Haskell.Exts.Annotated
+import Language.Haskell.Exts
 import Data.Generics.Traversable.TH
 
 deriveGTraversable ''ModuleName
@@ -150,3 +150,11 @@
 deriveGTraversable ''PatternSynDirection
 
 deriveGTraversable ''Role
+
+deriveGTraversable ''InjectivityInfo
+
+deriveGTraversable ''ResultSig
+
+deriveGTraversable ''Unpackedness
+
+deriveGTraversable ''EWildcard
diff --git a/src/Language/Haskell/Names/Open/Instances.hs b/src/Language/Haskell/Names/Open/Instances.hs
--- a/src/Language/Haskell/Names/Open/Instances.hs
+++ b/src/Language/Haskell/Names/Open/Instances.hs
@@ -15,7 +15,7 @@
 import Language.Haskell.Names.Open.Derived ()
 import Language.Haskell.Names.GetBound
 import Language.Haskell.Names.RecordWildcards
-import Language.Haskell.Exts.Annotated
+import Language.Haskell.Exts
 import Language.Haskell.Names.SyntaxUtils
 import qualified Data.Data as D
 import Control.Applicative
diff --git a/src/Language/Haskell/Names/RecordWildcards.hs b/src/Language/Haskell/Names/RecordWildcards.hs
--- a/src/Language/Haskell/Names/RecordWildcards.hs
+++ b/src/Language/Haskell/Names/RecordWildcards.hs
@@ -7,8 +7,6 @@
 import Control.Monad
 
 import Language.Haskell.Exts
-import Language.Haskell.Exts.Annotated.Simplify (sName)
-import qualified Language.Haskell.Exts.Annotated as Ann
 import Language.Haskell.Names.Types
 import Language.Haskell.Names.SyntaxUtils
 import qualified Language.Haskell.Names.GlobalSymbolTable as Global
@@ -26,9 +24,9 @@
 
 -- | Information about a field in the wildcard
 data WcField = WcField
-  { wcFieldName :: Name
+  { wcFieldName :: Name ()
     -- ^ the field's simple name
-  , wcFieldModuleName :: ModuleName
+  , wcFieldModuleName :: ModuleName ()
     -- ^ the field's original name
   , wcExistsGlobalValue :: Bool
     -- ^ whether there is a global value in scope with the same name as
@@ -37,14 +35,14 @@
 
 getElidedFields
   :: Global.Table
-  -> Ann.QName l
-  -> [Ann.Name l] -- mentioned field names
+  -> QName l
+  -> [Name l] -- mentioned field names
   -> WcNames
 getElidedFields globalTable con fields =
   let
-    givenFieldNames :: Map.Map Name ()
+    givenFieldNames :: Map.Map (Name ()) ()
     givenFieldNames =
-      Map.fromList . map ((, ()) . sName) $ fields
+      Map.fromList . map ((, ()) . dropAnn) $ fields
 
     -- FIXME must report error when the constructor cannot be
     -- resolved
@@ -61,9 +59,9 @@
         guard (conOrigName `elem` constructors)
         return symbol)
 
-    existsGlobalValue :: Name -> Bool
+    existsGlobalValue :: Name () -> Bool
     existsGlobalValue name =
-      case Map.lookup (UnQual name) globalTable of
+      case Map.lookup (UnQual () name) globalTable of
         Just [symbol]
           | Just typeOrigName <- mbTypeOrigName
           , Selector {} <- symbol
@@ -72,7 +70,7 @@
           | otherwise -> True -- exists, but not this field's selector
         _ -> False -- doesn't exist or ambiguous
 
-    ourFieldNames :: Map.Map Name WcField
+    ourFieldNames :: Map.Map (Name ()) WcField
     ourFieldNames = Map.fromList (do
         symbol <- ourFieldInfos
         let name = symbolName symbol
@@ -85,24 +83,24 @@
 
   in Map.elems $ ourFieldNames `Map.difference` givenFieldNames
 
-nameOfPatField :: Ann.PatField l -> Maybe (Ann.Name l)
+nameOfPatField :: PatField l -> Maybe (Name l)
 nameOfPatField pf =
   case pf of
-    Ann.PFieldPat _ qn _ -> Just $ qNameToName qn
-    Ann.PFieldPun _ qn -> Just $ qNameToName qn
-    Ann.PFieldWildcard {} -> Nothing
+    PFieldPat _ qn _ -> Just $ qNameToName qn
+    PFieldPun _ qn -> Just $ qNameToName qn
+    PFieldWildcard {} -> Nothing
 
-nameOfUpdField :: Ann.FieldUpdate l -> Maybe (Ann.Name l)
+nameOfUpdField :: FieldUpdate l -> Maybe (Name l)
 nameOfUpdField pf =
   case pf of
-    Ann.FieldUpdate _ qn _ -> Just $ qNameToName qn
-    Ann.FieldPun _ qn -> Just $ qNameToName qn
-    Ann.FieldWildcard {} -> Nothing
+    FieldUpdate _ qn _ -> Just $ qNameToName qn
+    FieldPun _ qn -> Just $ qNameToName qn
+    FieldWildcard {} -> Nothing
 
 patWcNames
   :: Global.Table
-  -> Ann.QName l
-  -> [Ann.PatField l]
+  -> QName l
+  -> [PatField l]
   -> WcNames
 patWcNames gt con patfs =
   getElidedFields gt con $
@@ -111,8 +109,8 @@
 expWcNames
   :: Global.Table
   -> Local.Table
-  -> Ann.QName l
-  -> [Ann.FieldUpdate l]
+  -> QName l
+  -> [FieldUpdate l]
   -> WcNames
 expWcNames gt lt con patfs =
   filter isInScope $
@@ -123,4 +121,4 @@
       | Right {} <- Local.lookupValue qn lt = True
       | otherwise = wcExistsGlobalValue field
       where
-        qn = Ann.UnQual () (annName (wcFieldName field))
+        qn = UnQual () (annName (wcFieldName field))
diff --git a/src/Language/Haskell/Names/Recursive.hs b/src/Language/Haskell/Names/Recursive.hs
--- a/src/Language/Haskell/Names/Recursive.hs
+++ b/src/Language/Haskell/Names/Recursive.hs
@@ -11,8 +11,7 @@
 
 import qualified Data.Map as Map (insert)
 import Control.Monad.State.Strict (State, execState, get, modify)
-import Language.Haskell.Exts.Annotated
-import Language.Haskell.Exts.Annotated.Simplify (sModuleName)
+import Language.Haskell.Exts
 
 import Language.Haskell.Names.Types
 import Language.Haskell.Names.SyntaxUtils
@@ -50,7 +49,7 @@
 findFixPoint modules = loop (replicate (length modules) []) where
   loop modulesSymbols = do
     forM_ (zip modules modulesSymbols) (\(modul, symbols) -> do
-      modify (Map.insert (sModuleName (getModuleName modul)) symbols))
+      modify (Map.insert (dropAnn (getModuleName modul)) symbols))
     environment <- get
     modulesSymbols' <- forM modules (\modul -> do
       let globalTable = moduleTable (importTable environment modul) modul
@@ -74,7 +73,7 @@
           maybeExports' = fmap (annotateExportSpecList globalTable) maybeExports
     modulePragmas' = fmap noScope modulePragmas
     importDecls' = annotateImportDecls moduleName environment importDecls
-    decls' = map (annotateDecl (initialScope (sModuleName moduleName) globalTable)) decls
+    decls' = map (annotateDecl (initialScope (dropAnn moduleName) globalTable)) decls
     globalTable = moduleTable (importTable environment modul) modul
     moduleName = getModuleName modul
 annotate _ _ = error "annotateModule: non-standard modules are not supported"
diff --git a/src/Language/Haskell/Names/ScopeUtils.hs b/src/Language/Haskell/Names/ScopeUtils.hs
--- a/src/Language/Haskell/Names/ScopeUtils.hs
+++ b/src/Language/Haskell/Names/ScopeUtils.hs
@@ -6,8 +6,6 @@
 import Language.Haskell.Names.Types
 import Language.Haskell.Names.SyntaxUtils
 import Language.Haskell.Exts
-import Language.Haskell.Exts.Annotated.Simplify (sName)
-import qualified Language.Haskell.Exts.Annotated as Ann
 import qualified Language.Haskell.Names.GlobalSymbolTable as Global
 import Control.Monad (guard)
 import Data.List (nub)
@@ -18,10 +16,10 @@
 none :: l -> Scoped l
 none = Scoped None
 
-noScope :: (Ann.Annotated a) => a l -> a (Scoped l)
+noScope :: (Annotated a) => a l -> a (Scoped l)
 noScope = fmap none
 
-symbolParent :: Symbol -> Maybe Name
+symbolParent :: Symbol -> Maybe (Name ())
 symbolParent (Selector { typeName = n }) = Just n
 symbolParent (Constructor { typeName = n }) = Just n
 symbolParent (Method { className = n }) = Just n
@@ -35,47 +33,47 @@
     -- inserted.
     --
     -- If 'False', then both qualified and unqualified names are insterted.
-  -> ModuleName
+  -> ModuleName ()
   -> [Symbol]
   -> Global.Table
 computeSymbolTable qual modulename symbols =
   Global.fromList (qualified <> if qual then [] else unqualified) where
     qualified = do
         symbol <- symbols
-        return (Qual modulename (symbolName symbol),symbol)
+        return (Qual  ()modulename (symbolName symbol),symbol)
     unqualified = do
         symbol <- symbols
-        return (UnQual (symbolName symbol),symbol)
+        return (UnQual () (symbolName symbol),symbol)
 
 -- | Find a single constructor or method name in a list of symbols
 resolveCName
   :: [Symbol]
-  -> Name
-  -> (Ann.CName l -> Error l) -- ^ error for "not found" condition
-  -> Ann.CName l
-  -> (Ann.CName (Scoped l), [Symbol])
+  -> Name ()
+  -> (CName l -> Error l) -- ^ error for "not found" condition
+  -> CName l
+  -> (CName (Scoped l), [Symbol])
 resolveCName symbols parent notFound cn =
   let
     vs = nub (do
         symbol <- symbols
         guard (Global.isValue symbol)
         let name = symbolName symbol
-        guard (sName (unCName cn) == name)
+        guard (dropAnn (unCName cn) == name)
         Just p <- return $ symbolParent symbol
         guard (p == parent)
         return symbol)
   in
     case vs of
       [] -> (scopeError (notFound cn) cn, [])
-      [symbol] -> (Scoped (GlobalSymbol symbol (UnQual (sName (unCName cn)))) <$> cn, [symbol])
+      [symbol] -> (Scoped (GlobalSymbol symbol (UnQual () (dropAnn (unCName cn)))) <$> cn, [symbol])
       _ -> (scopeError (EInternal "resolveCName") cn, [])
 
 -- | Find a list of constructor or method names in a list of symbols.
 resolveCNames
   :: [Symbol]
-  -> Name
-  -> (Ann.CName l -> Error l) -- ^ error for "not found" condition
-  -> [Ann.CName l]
-  -> ([Ann.CName (Scoped l)], [Symbol])
+  -> Name ()
+  -> (CName l -> Error l) -- ^ error for "not found" condition
+  -> [CName l]
+  -> ([CName (Scoped l)], [Symbol])
 resolveCNames syms orig notFound =
   second mconcat . unzip . map (resolveCName syms orig notFound)
diff --git a/src/Language/Haskell/Names/SyntaxUtils.hs b/src/Language/Haskell/Names/SyntaxUtils.hs
--- a/src/Language/Haskell/Names/SyntaxUtils.hs
+++ b/src/Language/Haskell/Names/SyntaxUtils.hs
@@ -26,8 +26,7 @@
 import Data.Either
 import Data.Foldable hiding (elem)
 import qualified Data.Set as Set
-import qualified Language.Haskell.Exts as UnAnn
-import Language.Haskell.Exts.Annotated
+import Language.Haskell.Exts
 import Language.Haskell.Names.Types
 
 dropAnn :: (Functor a) => a l -> a ()
@@ -36,17 +35,16 @@
 setAnn :: (Functor a) => l' -> a l -> a l'
 setAnn l = fmap (const l)
 
-annName :: UnAnn.Name -> Name ()
-annName (UnAnn.Ident n) = Ident () n
-annName (UnAnn.Symbol n) = Symbol () n
+annName :: a -> a
+annName = id
 
-nameQualification :: QName l -> Maybe UnAnn.ModuleName
+nameQualification :: QName l -> Maybe (ModuleName ())
 nameQualification (UnQual _ _) =
   Nothing
 nameQualification (Special _ _) =
   Nothing
 nameQualification (Qual _ (ModuleName _ moduleName) _) =
-  Just (UnAnn.ModuleName moduleName)
+  Just (ModuleName () moduleName)
 
 getModuleName :: Module l -> ModuleName l
 getModuleName (Module _ (Just (ModuleHead _ mn _ _)) _ _ _) = mn
@@ -90,7 +88,7 @@
 
 getDeclHead :: Decl l -> Maybe (DeclHead l)
 getDeclHead (TypeDecl _ dhead _) = Just dhead
-getDeclHead (TypeFamDecl _ dhead _) = Just dhead
+getDeclHead (TypeFamDecl _ dhead _ _) = Just dhead
 getDeclHead (DataDecl _ _ _ dhead _ _) = Just dhead
 getDeclHead (GDataDecl _ _ _ dhead _ _ _) = Just dhead
 getDeclHead (DataFamDecl _ _ dhead _) = Just dhead
@@ -109,7 +107,7 @@
 
 isTypeDecl :: Decl l -> Bool
 isTypeDecl (TypeDecl _ _ _) = True
-isTypeDecl (TypeFamDecl _ _ _) = True
+isTypeDecl (TypeFamDecl _ _ _ _) = True
 isTypeDecl (DataDecl _ _ _ _ _ _) = True
 isTypeDecl (GDataDecl _ _ _ _ _ _ _) = True
 isTypeDecl (DataFamDecl _ _ _ _) = True
diff --git a/src/Language/Haskell/Names/Types.hs b/src/Language/Haskell/Names/Types.hs
--- a/src/Language/Haskell/Names/Types.hs
+++ b/src/Language/Haskell/Names/Types.hs
@@ -3,7 +3,6 @@
 module Language.Haskell.Names.Types where
 
 import Language.Haskell.Exts
-import qualified Language.Haskell.Exts.Annotated as Ann
 import Data.Typeable
 import Data.Data
 import Data.Foldable as F
@@ -16,65 +15,65 @@
 -- declared in and its name.
 data Symbol
     = Value
-      { symbolModule :: ModuleName
-      , symbolName :: Name
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
       }
       -- ^ value or function
     | Method
-      { symbolModule :: ModuleName
-      , symbolName :: Name
-      , className :: Name
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
+      , className :: Name ()
       }
       -- ^ class method
     | Selector
-      { symbolModule :: ModuleName
-      , symbolName :: Name
-      , typeName :: Name
-      , constructors :: [Name]
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
+      , typeName :: Name ()
+      , constructors :: [Name ()]
       }
       -- ^ record field selector
     | Constructor
-      { symbolModule :: ModuleName
-      , symbolName :: Name
-      , typeName :: Name
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
+      , typeName :: Name ()
       }
       -- ^ data constructor
     | Type
-      { symbolModule :: ModuleName
-      , symbolName :: Name
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
       }
       -- ^ type synonym
     | Data
-      { symbolModule :: ModuleName
-      , symbolName :: Name
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
       }
       -- ^ data type
     | NewType
-      { symbolModule :: ModuleName
-      , symbolName :: Name
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
       }
       -- ^ newtype
     | TypeFam
-      { symbolModule :: ModuleName
-      , symbolName :: Name
-      , associate :: Maybe Name
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
+      , associate :: Maybe (Name ())
       }
       -- ^ type family
     | DataFam
-      { symbolModule :: ModuleName
-      , symbolName :: Name
-      , associate :: Maybe Name
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
+      , associate :: Maybe (Name ())
       }
       -- ^ data family
     | Class
-      { symbolModule :: ModuleName
-      , symbolName :: Name
+      { symbolModule :: ModuleName ()
+      , symbolName :: Name ()
       }
       -- ^ type class
     deriving (Eq, Ord, Show, Data, Typeable)
 
 -- | A map from module name to list of symbols it exports.
-type Environment = Map ModuleName [Symbol]
+type Environment = Map (ModuleName ()) [Symbol]
 
 -- | A pair of the name information and original annotation. Used as an
 -- annotation type for AST.
@@ -83,7 +82,7 @@
 
 -- | Information about the names used in an AST.
 data NameInfo l
-    = GlobalSymbol Symbol QName
+    = GlobalSymbol Symbol (QName ())
       -- ^ global entitiy and the way it is referenced
     | LocalValue  SrcLoc
       -- ^ local value, and location where it is bound
@@ -93,7 +92,7 @@
       -- ^ here the value name is bound
     | TypeBinder 
       -- ^ here the type name is defined
-    | Import      (Map QName [Symbol])
+    | Import      (Map (QName ()) [Symbol])
       -- ^ @import@ declaration, and the table of symbols that it
       -- introduces
     | ImportPart  [Symbol]
@@ -103,7 +102,7 @@
     | RecPatWildcard [Symbol]
       -- ^ wildcard in a record pattern. The list contains resolved names
       -- of the fields that are brought in scope by this pattern.
-    | RecExpWildcard [(Name, NameInfo l)]
+    | RecExpWildcard [(Name (), NameInfo l)]
       -- ^ wildcard in a record construction expression. The list contains
       -- resolved names of the fields and information about values
       -- assigned to those fields.
@@ -115,18 +114,18 @@
 
 -- | Errors during name resolution.
 data Error l
-  = ENotInScope (Ann.QName l) -- FIXME annotate with namespace (types/values)
+  = ENotInScope (QName l) -- FIXME annotate with namespace (types/values)
     -- ^ name is not in scope
-  | EAmbiguous (Ann.QName l) [Symbol]
+  | EAmbiguous (QName l) [Symbol]
     -- ^ name is ambiguous
-  | ETypeAsClass (Ann.QName l)
+  | ETypeAsClass (QName l)
     -- ^ type is used where a type class is expected
-  | EClassAsType (Ann.QName l)
+  | EClassAsType (QName l)
     -- ^ type class is used where a type is expected
   | ENotExported
-      (Maybe (Ann.Name l)) --
-      (Ann.Name l)         --
-      (Ann.ModuleName l)
+      (Maybe (Name l)) --
+      (Name l)         --
+      (ModuleName l)
     -- ^ Attempt to explicitly import a name which is not exported (or,
     -- possibly, does not even exist). For example:
     --
@@ -139,7 +138,7 @@
     -- 2. the name which is not exported
     --
     -- 3. the module which does not export the name
-  | EModNotFound (Ann.ModuleName l)
+  | EModNotFound (ModuleName l)
     -- ^ module not found
   | EInternal String
     -- ^ internal error
@@ -152,7 +151,7 @@
 -- | Display an error.
 --
 -- Note: can span multiple lines; the trailing newline is included.
-ppError :: Ann.SrcInfo l => Error l -> String
+ppError :: SrcInfo l => Error l -> String
 ppError e =
   case e of
     ENotInScope qn -> printf "%s: not in scope: %s\n"
@@ -185,16 +184,16 @@
     EInternal s -> printf "Internal error: %s\n" s
 
   where
-    ppLoc :: (Ann.Annotated a, Ann.SrcInfo l) => a l -> String
-    ppLoc = prettyPrint . Ann.getPointLoc . Ann.ann
+    ppLoc :: (Annotated a, SrcInfo l) => a l -> String
+    ppLoc = prettyPrint . getPointLoc . ann
 
-instance (Ann.SrcInfo l) => Ann.SrcInfo (Scoped l) where
-    toSrcInfo l1 ss l2 = Scoped None $ Ann.toSrcInfo l1 ss l2
-    fromSrcInfo = Scoped None . Ann.fromSrcInfo
-    getPointLoc = Ann.getPointLoc . sLoc
-    fileName = Ann.fileName . sLoc
-    startLine = Ann.startLine . sLoc
-    startColumn = Ann.startColumn . sLoc
+instance (SrcInfo l) => SrcInfo (Scoped l) where
+    toSrcInfo l1 ss l2 = Scoped None $ toSrcInfo l1 ss l2
+    fromSrcInfo = Scoped None . fromSrcInfo
+    getPointLoc = getPointLoc . sLoc
+    fileName = fileName . sLoc
+    startLine = startLine . sLoc
+    startColumn = startColumn . sLoc
 
 sLoc :: Scoped l -> l
 sLoc (Scoped _ l) = l
diff --git a/tests/environment/Prelude.symbols.golden b/tests/environment/Prelude.symbols.golden
new file mode 100644
--- /dev/null
+++ b/tests/environment/Prelude.symbols.golden
@@ -0,0 +1,1 @@
+[{"name":"Bool","module":"GHC.Types","entity":"data"},{"name":"False","module":"GHC.Types","type":"Bool","entity":"constructor"},{"name":"True","module":"GHC.Types","type":"Bool","entity":"constructor"},{"name":"&&","module":"GHC.Classes","entity":"value"},{"name":"||","module":"GHC.Classes","entity":"value"},{"name":"not","module":"GHC.Classes","entity":"value"},{"name":"otherwise","module":"GHC.Base","entity":"value"},{"name":"Maybe","module":"Data.Maybe","entity":"data"},{"name":"Nothing","module":"Data.Maybe","type":"Maybe","entity":"constructor"},{"name":"Just","module":"Data.Maybe","type":"Maybe","entity":"constructor"},{"name":"maybe","module":"Data.Maybe","entity":"value"},{"name":"Either","module":"Data.Either","entity":"data"},{"name":"Left","module":"Data.Either","type":"Either","entity":"constructor"},{"name":"Right","module":"Data.Either","type":"Either","entity":"constructor"},{"name":"either","module":"Data.Either","entity":"value"},{"name":"Ordering","module":"GHC.Types","entity":"data"},{"name":"LT","module":"GHC.Types","type":"Ordering","entity":"constructor"},{"name":"EQ","module":"GHC.Types","type":"Ordering","entity":"constructor"},{"name":"GT","module":"GHC.Types","type":"Ordering","entity":"constructor"},{"name":"Char","module":"GHC.Types","entity":"data"},{"name":"String","module":"GHC.Base","entity":"type"},{"name":"fst","module":"Data.Tuple","entity":"value"},{"name":"snd","module":"Data.Tuple","entity":"value"},{"name":"curry","module":"Data.Tuple","entity":"value"},{"name":"uncurry","module":"Data.Tuple","entity":"value"},{"name":"Eq","module":"GHC.Classes","entity":"class"},{"name":"==","module":"GHC.Classes","entity":"method","class":"Eq"},{"name":"/=","module":"GHC.Classes","entity":"method","class":"Eq"},{"name":"Ord","module":"GHC.Classes","entity":"class"},{"name":"compare","module":"GHC.Classes","entity":"method","class":"Ord"},{"name":"<","module":"GHC.Classes","entity":"method","class":"Ord"},{"name":"<=","module":"GHC.Classes","entity":"method","class":"Ord"},{"name":">=","module":"GHC.Classes","entity":"method","class":"Ord"},{"name":">","module":"GHC.Classes","entity":"method","class":"Ord"},{"name":"max","module":"GHC.Classes","entity":"method","class":"Ord"},{"name":"min","module":"GHC.Classes","entity":"method","class":"Ord"},{"name":"Enum","module":"GHC.Enum","entity":"class"},{"name":"succ","module":"GHC.Enum","entity":"method","class":"Enum"},{"name":"pred","module":"GHC.Enum","entity":"method","class":"Enum"},{"name":"toEnum","module":"GHC.Enum","entity":"method","class":"Enum"},{"name":"fromEnum","module":"GHC.Enum","entity":"method","class":"Enum"},{"name":"enumFrom","module":"GHC.Enum","entity":"method","class":"Enum"},{"name":"enumFromThen","module":"GHC.Enum","entity":"method","class":"Enum"},{"name":"enumFromTo","module":"GHC.Enum","entity":"method","class":"Enum"},{"name":"enumFromThenTo","module":"GHC.Enum","entity":"method","class":"Enum"},{"name":"Bounded","module":"GHC.Enum","entity":"class"},{"name":"minBound","module":"GHC.Enum","entity":"method","class":"Bounded"},{"name":"maxBound","module":"GHC.Enum","entity":"method","class":"Bounded"},{"name":"Int","module":"GHC.Types","entity":"data"},{"name":"Integer","module":"GHC.Integer.Type","entity":"data"},{"name":"Float","module":"GHC.Types","entity":"data"},{"name":"Double","module":"GHC.Types","entity":"data"},{"name":"Rational","module":"GHC.Real","entity":"type"},{"name":"Num","module":"GHC.Num","entity":"class"},{"name":"+","module":"GHC.Num","entity":"method","class":"Num"},{"name":"-","module":"GHC.Num","entity":"method","class":"Num"},{"name":"*","module":"GHC.Num","entity":"method","class":"Num"},{"name":"negate","module":"GHC.Num","entity":"method","class":"Num"},{"name":"abs","module":"GHC.Num","entity":"method","class":"Num"},{"name":"signum","module":"GHC.Num","entity":"method","class":"Num"},{"name":"fromInteger","module":"GHC.Num","entity":"method","class":"Num"},{"name":"Real","module":"GHC.Real","entity":"class"},{"name":"toRational","module":"GHC.Real","entity":"method","class":"Real"},{"name":"Integral","module":"GHC.Real","entity":"class"},{"name":"quot","module":"GHC.Real","entity":"method","class":"Integral"},{"name":"rem","module":"GHC.Real","entity":"method","class":"Integral"},{"name":"div","module":"GHC.Real","entity":"method","class":"Integral"},{"name":"mod","module":"GHC.Real","entity":"method","class":"Integral"},{"name":"quotRem","module":"GHC.Real","entity":"method","class":"Integral"},{"name":"divMod","module":"GHC.Real","entity":"method","class":"Integral"},{"name":"toInteger","module":"GHC.Real","entity":"method","class":"Integral"},{"name":"Fractional","module":"GHC.Real","entity":"class"},{"name":"/","module":"GHC.Real","entity":"method","class":"Fractional"},{"name":"recip","module":"GHC.Real","entity":"method","class":"Fractional"},{"name":"fromRational","module":"GHC.Real","entity":"method","class":"Fractional"},{"name":"Floating","module":"GHC.Float","entity":"class"},{"name":"pi","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"exp","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"log","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"sqrt","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"**","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"logBase","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"sin","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"cos","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"tan","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"asin","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"acos","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"atan","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"sinh","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"cosh","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"tanh","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"asinh","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"acosh","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"atanh","module":"GHC.Float","entity":"method","class":"Floating"},{"name":"RealFrac","module":"GHC.Real","entity":"class"},{"name":"properFraction","module":"GHC.Real","entity":"method","class":"RealFrac"},{"name":"truncate","module":"GHC.Real","entity":"method","class":"RealFrac"},{"name":"round","module":"GHC.Real","entity":"method","class":"RealFrac"},{"name":"ceiling","module":"GHC.Real","entity":"method","class":"RealFrac"},{"name":"floor","module":"GHC.Real","entity":"method","class":"RealFrac"},{"name":"RealFloat","module":"GHC.Float","entity":"class"},{"name":"floatRadix","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"floatDigits","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"floatRange","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"decodeFloat","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"encodeFloat","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"exponent","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"significand","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"scaleFloat","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"isNaN","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"isInfinite","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"isDenormalized","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"isIEEE","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"isNegativeZero","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"atan2","module":"GHC.Float","entity":"method","class":"RealFloat"},{"name":"subtract","module":"GHC.Num","entity":"value"},{"name":"even","module":"GHC.Real","entity":"value"},{"name":"odd","module":"GHC.Real","entity":"value"},{"name":"gcd","module":"GHC.Real","entity":"value"},{"name":"lcm","module":"GHC.Real","entity":"value"},{"name":"^","module":"GHC.Real","entity":"value"},{"name":"^^","module":"GHC.Real","entity":"value"},{"name":"fromIntegral","module":"GHC.Real","entity":"value"},{"name":"realToFrac","module":"GHC.Real","entity":"value"},{"name":"Monad","module":"GHC.Base","entity":"class"},{"name":">>=","module":"GHC.Base","entity":"method","class":"Monad"},{"name":">>","module":"GHC.Base","entity":"method","class":"Monad"},{"name":"return","module":"GHC.Base","entity":"method","class":"Monad"},{"name":"fail","module":"GHC.Base","entity":"method","class":"Monad"},{"name":"Functor","module":"GHC.Base","entity":"class"},{"name":"fmap","module":"GHC.Base","entity":"method","class":"Functor"},{"name":"mapM","module":"Control.Monad","entity":"value"},{"name":"mapM_","module":"Control.Monad","entity":"value"},{"name":"sequence","module":"Control.Monad","entity":"value"},{"name":"sequence_","module":"Control.Monad","entity":"value"},{"name":"=<<","module":"Control.Monad","entity":"value"},{"name":"id","module":"GHC.Base","entity":"value"},{"name":"const","module":"GHC.Base","entity":"value"},{"name":".","module":"GHC.Base","entity":"value"},{"name":"flip","module":"GHC.Base","entity":"value"},{"name":"$","module":"GHC.Base","entity":"value"},{"name":"until","module":"GHC.Base","entity":"value"},{"name":"asTypeOf","module":"GHC.Base","entity":"value"},{"name":"error","module":"GHC.Err","entity":"value"},{"name":"undefined","module":"GHC.Err","entity":"value"},{"name":"seq","module":"GHC.Prim","entity":"value"},{"name":"$!","module":"Prelude","entity":"value"},{"name":"map","module":"GHC.Base","entity":"value"},{"name":"++","module":"GHC.Base","entity":"value"},{"name":"filter","module":"GHC.List","entity":"value"},{"name":"head","module":"GHC.List","entity":"value"},{"name":"last","module":"GHC.List","entity":"value"},{"name":"tail","module":"GHC.List","entity":"value"},{"name":"init","module":"GHC.List","entity":"value"},{"name":"null","module":"GHC.List","entity":"value"},{"name":"length","module":"GHC.List","entity":"value"},{"name":"!!","module":"GHC.List","entity":"value"},{"name":"reverse","module":"GHC.List","entity":"value"},{"name":"foldl","module":"GHC.List","entity":"value"},{"name":"foldl1","module":"Data.List","entity":"value"},{"name":"foldr","module":"GHC.Base","entity":"value"},{"name":"foldr1","module":"GHC.List","entity":"value"},{"name":"and","module":"GHC.List","entity":"value"},{"name":"or","module":"GHC.List","entity":"value"},{"name":"any","module":"GHC.List","entity":"value"},{"name":"all","module":"GHC.List","entity":"value"},{"name":"sum","module":"Data.List","entity":"value"},{"name":"product","module":"Data.List","entity":"value"},{"name":"concat","module":"GHC.List","entity":"value"},{"name":"concatMap","module":"GHC.List","entity":"value"},{"name":"maximum","module":"Data.List","entity":"value"},{"name":"minimum","module":"Data.List","entity":"value"},{"name":"scanl","module":"GHC.List","entity":"value"},{"name":"scanl1","module":"GHC.List","entity":"value"},{"name":"scanr","module":"GHC.List","entity":"value"},{"name":"scanr1","module":"GHC.List","entity":"value"},{"name":"iterate","module":"GHC.List","entity":"value"},{"name":"repeat","module":"GHC.List","entity":"value"},{"name":"replicate","module":"GHC.List","entity":"value"},{"name":"cycle","module":"GHC.List","entity":"value"},{"name":"take","module":"GHC.List","entity":"value"},{"name":"drop","module":"GHC.List","entity":"value"},{"name":"splitAt","module":"GHC.List","entity":"value"},{"name":"takeWhile","module":"GHC.List","entity":"value"},{"name":"dropWhile","module":"GHC.List","entity":"value"},{"name":"span","module":"GHC.List","entity":"value"},{"name":"break","module":"GHC.List","entity":"value"},{"name":"elem","module":"GHC.List","entity":"value"},{"name":"notElem","module":"GHC.List","entity":"value"},{"name":"lookup","module":"GHC.List","entity":"value"},{"name":"zip","module":"GHC.List","entity":"value"},{"name":"zip3","module":"GHC.List","entity":"value"},{"name":"zipWith","module":"GHC.List","entity":"value"},{"name":"zipWith3","module":"GHC.List","entity":"value"},{"name":"unzip","module":"GHC.List","entity":"value"},{"name":"unzip3","module":"GHC.List","entity":"value"},{"name":"lines","module":"Data.List","entity":"value"},{"name":"words","module":"Data.List","entity":"value"},{"name":"unlines","module":"Data.List","entity":"value"},{"name":"unwords","module":"Data.List","entity":"value"},{"name":"ShowS","module":"GHC.Show","entity":"type"},{"name":"Show","module":"GHC.Show","entity":"class"},{"name":"showsPrec","module":"GHC.Show","entity":"method","class":"Show"},{"name":"showList","module":"GHC.Show","entity":"method","class":"Show"},{"name":"show","module":"GHC.Show","entity":"method","class":"Show"},{"name":"shows","module":"GHC.Show","entity":"value"},{"name":"showChar","module":"GHC.Show","entity":"value"},{"name":"showString","module":"GHC.Show","entity":"value"},{"name":"showParen","module":"GHC.Show","entity":"value"},{"name":"ReadS","module":"Text.ParserCombinators.ReadP","entity":"type"},{"name":"Read","module":"GHC.Read","entity":"class"},{"name":"readsPrec","module":"GHC.Read","entity":"method","class":"Read"},{"name":"readList","module":"GHC.Read","entity":"method","class":"Read"},{"name":"reads","module":"Text.Read","entity":"value"},{"name":"readParen","module":"GHC.Read","entity":"value"},{"name":"read","module":"Text.Read","entity":"value"},{"name":"lex","module":"GHC.Read","entity":"value"},{"name":"IO","module":"GHC.Types","entity":"newtype"},{"name":"putChar","module":"System.IO","entity":"value"},{"name":"putStr","module":"System.IO","entity":"value"},{"name":"putStrLn","module":"System.IO","entity":"value"},{"name":"print","module":"System.IO","entity":"value"},{"name":"getChar","module":"System.IO","entity":"value"},{"name":"getLine","module":"System.IO","entity":"value"},{"name":"getContents","module":"System.IO","entity":"value"},{"name":"interact","module":"System.IO","entity":"value"},{"name":"FilePath","module":"GHC.IO","entity":"type"},{"name":"readFile","module":"System.IO","entity":"value"},{"name":"writeFile","module":"System.IO","entity":"value"},{"name":"appendFile","module":"System.IO","entity":"value"},{"name":"readIO","module":"System.IO","entity":"value"},{"name":"readLn","module":"System.IO","entity":"value"},{"name":"IOError","module":"GHC.IO.Exception","entity":"type"},{"name":"ioError","module":"GHC.IO.Exception","entity":"value"},{"name":"userError","module":"GHC.IO.Exception","entity":"value"}]
diff --git a/tests/exports/DataFamilies.hs.golden b/tests/exports/DataFamilies.hs.golden
--- a/tests/exports/DataFamilies.hs.golden
+++ b/tests/exports/DataFamilies.hs.golden
@@ -1,30 +1,30 @@
 [ DataFam
-    { symbolModule = ModuleName "DataFamilies"
-    , symbolName = Ident "Vector"
+    { symbolModule = ModuleName () "DataFamilies"
+    , symbolName = Ident () "Vector"
     , associate = Nothing
     }
 , Class
-    { symbolModule = ModuleName "DataFamilies"
-    , symbolName = Ident "ListLike"
+    { symbolModule = ModuleName () "DataFamilies"
+    , symbolName = Ident () "ListLike"
     }
 , TypeFam
-    { symbolModule = ModuleName "DataFamilies"
-    , symbolName = Ident "I"
-    , associate = Just (Ident "ListLike")
+    { symbolModule = ModuleName () "DataFamilies"
+    , symbolName = Ident () "I"
+    , associate = Just (Ident () "ListLike")
     }
 , Method
-    { symbolModule = ModuleName "DataFamilies"
-    , symbolName = Ident "method1"
-    , className = Ident "ListLike"
+    { symbolModule = ModuleName () "DataFamilies"
+    , symbolName = Ident () "method1"
+    , className = Ident () "ListLike"
     }
 , DataFam
-    { symbolModule = ModuleName "DataFamilies"
-    , symbolName = Ident "Vector"
+    { symbolModule = ModuleName () "DataFamilies"
+    , symbolName = Ident () "Vector"
     , associate = Nothing
     }
 , Constructor
-    { symbolModule = ModuleName "DataFamilies"
-    , symbolName = Ident "U_Vector"
-    , typeName = Ident "Vector"
+    { symbolModule = ModuleName () "DataFamilies"
+    , symbolName = Ident () "U_Vector"
+    , typeName = Ident () "Vector"
     }
 ]
diff --git a/tests/exports/ExportList.hs.golden b/tests/exports/ExportList.hs.golden
--- a/tests/exports/ExportList.hs.golden
+++ b/tests/exports/ExportList.hs.golden
@@ -1,3 +1,5 @@
 [ Data
-    { symbolModule = ModuleName "ExportList" , symbolName = Ident "A" }
+    { symbolModule = ModuleName () "ExportList"
+    , symbolName = Ident () "A"
+    }
 ]
diff --git a/tests/exports/ExportList2.hs.golden b/tests/exports/ExportList2.hs.golden
--- a/tests/exports/ExportList2.hs.golden
+++ b/tests/exports/ExportList2.hs.golden
@@ -1,11 +1,11 @@
 [ Selector
-    { symbolModule = ModuleName "ExportList2"
-    , symbolName = Ident "b"
-    , typeName = Ident "A"
-    , constructors = [ Ident "B" , Ident "A" ]
+    { symbolModule = ModuleName () "ExportList2"
+    , symbolName = Ident () "b"
+    , typeName = Ident () "A"
+    , constructors = [ Ident () "B" , Ident () "A" ]
     }
 , Value
-    { symbolModule = ModuleName "ExportList2"
-    , symbolName = Ident "c"
+    { symbolModule = ModuleName () "ExportList2"
+    , symbolName = Ident () "c"
     }
 ]
diff --git a/tests/exports/ExportListMembers.hs.golden b/tests/exports/ExportListMembers.hs.golden
--- a/tests/exports/ExportListMembers.hs.golden
+++ b/tests/exports/ExportListMembers.hs.golden
@@ -1,39 +1,39 @@
 [ Data
-    { symbolModule = ModuleName "ExportListMembers"
-    , symbolName = Ident "Foo"
+    { symbolModule = ModuleName () "ExportListMembers"
+    , symbolName = Ident () "Foo"
     }
 , Constructor
-    { symbolModule = ModuleName "ExportListMembers"
-    , symbolName = Ident "Foo1"
-    , typeName = Ident "Foo"
+    { symbolModule = ModuleName () "ExportListMembers"
+    , symbolName = Ident () "Foo1"
+    , typeName = Ident () "Foo"
     }
 , Constructor
-    { symbolModule = ModuleName "ExportListMembers"
-    , symbolName = Ident "Foo3"
-    , typeName = Ident "Foo"
+    { symbolModule = ModuleName () "ExportListMembers"
+    , symbolName = Ident () "Foo3"
+    , typeName = Ident () "Foo"
     }
 , Selector
-    { symbolModule = ModuleName "ExportListMembers"
-    , symbolName = Ident "c"
-    , typeName = Ident "Foo"
-    , constructors = [ Ident "Foo2" ]
+    { symbolModule = ModuleName () "ExportListMembers"
+    , symbolName = Ident () "c"
+    , typeName = Ident () "Foo"
+    , constructors = [ Ident () "Foo2" ]
     }
 , Class
-    { symbolModule = ModuleName "ExportListMembers"
-    , symbolName = Ident "Bar"
+    { symbolModule = ModuleName () "ExportListMembers"
+    , symbolName = Ident () "Bar"
     }
 , Method
-    { symbolModule = ModuleName "ExportListMembers"
-    , symbolName = Ident "x"
-    , className = Ident "Bar"
+    { symbolModule = ModuleName () "ExportListMembers"
+    , symbolName = Ident () "x"
+    , className = Ident () "Bar"
     }
 , NewType
-    { symbolModule = ModuleName "ExportListMembers"
-    , symbolName = Ident "N"
+    { symbolModule = ModuleName () "ExportListMembers"
+    , symbolName = Ident () "N"
     }
 , Constructor
-    { symbolModule = ModuleName "ExportListMembers"
-    , symbolName = Ident "N"
-    , typeName = Ident "N"
+    { symbolModule = ModuleName () "ExportListMembers"
+    , symbolName = Ident () "N"
+    , typeName = Ident () "N"
     }
 ]
diff --git a/tests/exports/ExportListWildcards.hs.golden b/tests/exports/ExportListWildcards.hs.golden
--- a/tests/exports/ExportListWildcards.hs.golden
+++ b/tests/exports/ExportListWildcards.hs.golden
@@ -1,50 +1,50 @@
 [ Data
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "Foo"
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "Foo"
     }
 , Constructor
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "Foo1"
-    , typeName = Ident "Foo"
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "Foo1"
+    , typeName = Ident () "Foo"
     }
 , Constructor
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "Foo2"
-    , typeName = Ident "Foo"
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "Foo2"
+    , typeName = Ident () "Foo"
     }
 , Constructor
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "Foo3"
-    , typeName = Ident "Foo"
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "Foo3"
+    , typeName = Ident () "Foo"
     }
 , Selector
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "c"
-    , typeName = Ident "Foo"
-    , constructors = [ Ident "Foo3" ]
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "c"
+    , typeName = Ident () "Foo"
+    , constructors = [ Ident () "Foo3" ]
     }
 , Class
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "Bar"
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "Bar"
     }
 , Method
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "x"
-    , className = Ident "Bar"
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "x"
+    , className = Ident () "Bar"
     }
 , NewType
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "N"
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "N"
     }
 , Constructor
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "N"
-    , typeName = Ident "N"
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "N"
+    , typeName = Ident () "N"
     }
 , Selector
-    { symbolModule = ModuleName "ExportListWildcards"
-    , symbolName = Ident "unN"
-    , typeName = Ident "N"
-    , constructors = [ Ident "N" ]
+    { symbolModule = ModuleName () "ExportListWildcards"
+    , symbolName = Ident () "unN"
+    , typeName = Ident () "N"
+    , constructors = [ Ident () "N" ]
     }
 ]
diff --git a/tests/exports/ImplicitExportList.hs.golden b/tests/exports/ImplicitExportList.hs.golden
--- a/tests/exports/ImplicitExportList.hs.golden
+++ b/tests/exports/ImplicitExportList.hs.golden
@@ -1,3 +1,5 @@
 [ Value
-    { symbolModule = ModuleName "Main" , symbolName = Ident "main" }
+    { symbolModule = ModuleName () "Main"
+    , symbolName = Ident () "main"
+    }
 ]
diff --git a/tests/exports/ModuleReExport.hs.golden b/tests/exports/ModuleReExport.hs.golden
--- a/tests/exports/ModuleReExport.hs.golden
+++ b/tests/exports/ModuleReExport.hs.golden
@@ -1,82 +1,82 @@
 [ Value
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "function"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "function"
     }
 , Method
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "method1"
-    , className = Ident "Class"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "method1"
+    , className = Ident () "Class"
     }
 , Method
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "method2"
-    , className = Ident "Class"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "method2"
+    , className = Ident () "Class"
     }
 , Selector
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "selector1"
-    , typeName = Ident "DataTypeWithSelectors"
-    , constructors = [ Ident "DataTypeWithSelectors" ]
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "selector1"
+    , typeName = Ident () "DataTypeWithSelectors"
+    , constructors = [ Ident () "DataTypeWithSelectors" ]
     }
 , Selector
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "selector2"
-    , typeName = Ident "DataTypeWithSelectors"
-    , constructors = [ Ident "DataTypeWithSelectors" ]
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "selector2"
+    , typeName = Ident () "DataTypeWithSelectors"
+    , constructors = [ Ident () "DataTypeWithSelectors" ]
     }
 , Selector
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "unNewtype"
-    , typeName = Ident "NewtypeWithSelectors"
-    , constructors = [ Ident "NewtypeWithSelectors" ]
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "unNewtype"
+    , typeName = Ident () "NewtypeWithSelectors"
+    , constructors = [ Ident () "NewtypeWithSelectors" ]
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Constructor1"
-    , typeName = Ident "DataType"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Constructor1"
+    , typeName = Ident () "DataType"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Constructor2"
-    , typeName = Ident "DataType"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Constructor2"
+    , typeName = Ident () "DataType"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "DataTypeWithSelectors"
-    , typeName = Ident "DataTypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "DataTypeWithSelectors"
+    , typeName = Ident () "DataTypeWithSelectors"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Newtype"
-    , typeName = Ident "Newtype"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Newtype"
+    , typeName = Ident () "Newtype"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "NewtypeWithSelectors"
-    , typeName = Ident "NewtypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "NewtypeWithSelectors"
+    , typeName = Ident () "NewtypeWithSelectors"
     }
 , Type
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "TypeSynonym"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "TypeSynonym"
     }
 , Data
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "DataType"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "DataType"
     }
 , Data
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "DataTypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "DataTypeWithSelectors"
     }
 , NewType
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Newtype"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Newtype"
     }
 , NewType
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "NewtypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "NewtypeWithSelectors"
     }
 , Class
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Class"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Class"
     }
 ]
diff --git a/tests/exports/Prelude.hs.golden b/tests/exports/Prelude.hs.golden
--- a/tests/exports/Prelude.hs.golden
+++ b/tests/exports/Prelude.hs.golden
@@ -1,82 +1,82 @@
 [ Data
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "DataType"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "DataType"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Constructor1"
-    , typeName = Ident "DataType"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Constructor1"
+    , typeName = Ident () "DataType"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Constructor2"
-    , typeName = Ident "DataType"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Constructor2"
+    , typeName = Ident () "DataType"
     }
 , Data
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "DataTypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "DataTypeWithSelectors"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "DataTypeWithSelectors"
-    , typeName = Ident "DataTypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "DataTypeWithSelectors"
+    , typeName = Ident () "DataTypeWithSelectors"
     }
 , Selector
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "selector1"
-    , typeName = Ident "DataTypeWithSelectors"
-    , constructors = [ Ident "DataTypeWithSelectors" ]
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "selector1"
+    , typeName = Ident () "DataTypeWithSelectors"
+    , constructors = [ Ident () "DataTypeWithSelectors" ]
     }
 , Selector
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "selector2"
-    , typeName = Ident "DataTypeWithSelectors"
-    , constructors = [ Ident "DataTypeWithSelectors" ]
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "selector2"
+    , typeName = Ident () "DataTypeWithSelectors"
+    , constructors = [ Ident () "DataTypeWithSelectors" ]
     }
 , NewType
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Newtype"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Newtype"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Newtype"
-    , typeName = Ident "Newtype"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Newtype"
+    , typeName = Ident () "Newtype"
     }
 , NewType
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "NewtypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "NewtypeWithSelectors"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "NewtypeWithSelectors"
-    , typeName = Ident "NewtypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "NewtypeWithSelectors"
+    , typeName = Ident () "NewtypeWithSelectors"
     }
 , Selector
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "unNewtype"
-    , typeName = Ident "NewtypeWithSelectors"
-    , constructors = [ Ident "NewtypeWithSelectors" ]
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "unNewtype"
+    , typeName = Ident () "NewtypeWithSelectors"
+    , constructors = [ Ident () "NewtypeWithSelectors" ]
     }
 , Type
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "TypeSynonym"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "TypeSynonym"
     }
 , Class
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Class"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Class"
     }
 , Method
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "method1"
-    , className = Ident "Class"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "method1"
+    , className = Ident () "Class"
     }
 , Method
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "method2"
-    , className = Ident "Class"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "method2"
+    , className = Ident () "Class"
     }
 , Value
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "function"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "function"
     }
 ]
diff --git a/tests/exports/Rec1.hs.golden b/tests/exports/Rec1.hs.golden
--- a/tests/exports/Rec1.hs.golden
+++ b/tests/exports/Rec1.hs.golden
@@ -1,9 +1,17 @@
 [ Value
-    { symbolModule = ModuleName "Rec1" , symbolName = Ident "rec1_1" }
+    { symbolModule = ModuleName () "Rec1"
+    , symbolName = Ident () "rec1_1"
+    }
 , Value
-    { symbolModule = ModuleName "Rec1" , symbolName = Ident "rec1_2" }
+    { symbolModule = ModuleName () "Rec1"
+    , symbolName = Ident () "rec1_2"
+    }
 , Value
-    { symbolModule = ModuleName "Rec2" , symbolName = Ident "rec2" }
+    { symbolModule = ModuleName () "Rec2"
+    , symbolName = Ident () "rec2"
+    }
 , Value
-    { symbolModule = ModuleName "Rec3" , symbolName = Ident "rec3" }
+    { symbolModule = ModuleName () "Rec3"
+    , symbolName = Ident () "rec3"
+    }
 ]
diff --git a/tests/exports/Rec2.hs.golden b/tests/exports/Rec2.hs.golden
--- a/tests/exports/Rec2.hs.golden
+++ b/tests/exports/Rec2.hs.golden
@@ -1,7 +1,13 @@
 [ Value
-    { symbolModule = ModuleName "Rec2" , symbolName = Ident "rec2" }
+    { symbolModule = ModuleName () "Rec2"
+    , symbolName = Ident () "rec2"
+    }
 , Value
-    { symbolModule = ModuleName "Rec1" , symbolName = Ident "rec1_1" }
+    { symbolModule = ModuleName () "Rec1"
+    , symbolName = Ident () "rec1_1"
+    }
 , Value
-    { symbolModule = ModuleName "Rec3" , symbolName = Ident "rec3" }
+    { symbolModule = ModuleName () "Rec3"
+    , symbolName = Ident () "rec3"
+    }
 ]
diff --git a/tests/exports/Rec3.hs.golden b/tests/exports/Rec3.hs.golden
--- a/tests/exports/Rec3.hs.golden
+++ b/tests/exports/Rec3.hs.golden
@@ -1,7 +1,13 @@
 [ Value
-    { symbolModule = ModuleName "Rec1" , symbolName = Ident "rec1_1" }
+    { symbolModule = ModuleName () "Rec1"
+    , symbolName = Ident () "rec1_1"
+    }
 , Value
-    { symbolModule = ModuleName "Rec1" , symbolName = Ident "rec1_2" }
+    { symbolModule = ModuleName () "Rec1"
+    , symbolName = Ident () "rec1_2"
+    }
 , Value
-    { symbolModule = ModuleName "Rec3" , symbolName = Ident "rec3" }
+    { symbolModule = ModuleName () "Rec3"
+    , symbolName = Ident () "rec3"
+    }
 ]
diff --git a/tests/exports/SelfReExport.hs.golden b/tests/exports/SelfReExport.hs.golden
--- a/tests/exports/SelfReExport.hs.golden
+++ b/tests/exports/SelfReExport.hs.golden
@@ -1,90 +1,90 @@
 [ Value
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "function"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "function"
     }
 , Method
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "method1"
-    , className = Ident "Class"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "method1"
+    , className = Ident () "Class"
     }
 , Method
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "method2"
-    , className = Ident "Class"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "method2"
+    , className = Ident () "Class"
     }
 , Selector
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "selector1"
-    , typeName = Ident "DataTypeWithSelectors"
-    , constructors = [ Ident "DataTypeWithSelectors" ]
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "selector1"
+    , typeName = Ident () "DataTypeWithSelectors"
+    , constructors = [ Ident () "DataTypeWithSelectors" ]
     }
 , Selector
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "selector2"
-    , typeName = Ident "DataTypeWithSelectors"
-    , constructors = [ Ident "DataTypeWithSelectors" ]
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "selector2"
+    , typeName = Ident () "DataTypeWithSelectors"
+    , constructors = [ Ident () "DataTypeWithSelectors" ]
     }
 , Selector
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "unNewtype"
-    , typeName = Ident "NewtypeWithSelectors"
-    , constructors = [ Ident "NewtypeWithSelectors" ]
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "unNewtype"
+    , typeName = Ident () "NewtypeWithSelectors"
+    , constructors = [ Ident () "NewtypeWithSelectors" ]
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Constructor1"
-    , typeName = Ident "DataType"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Constructor1"
+    , typeName = Ident () "DataType"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Constructor2"
-    , typeName = Ident "DataType"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Constructor2"
+    , typeName = Ident () "DataType"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "DataTypeWithSelectors"
-    , typeName = Ident "DataTypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "DataTypeWithSelectors"
+    , typeName = Ident () "DataTypeWithSelectors"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Newtype"
-    , typeName = Ident "Newtype"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Newtype"
+    , typeName = Ident () "Newtype"
     }
 , Constructor
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "NewtypeWithSelectors"
-    , typeName = Ident "NewtypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "NewtypeWithSelectors"
+    , typeName = Ident () "NewtypeWithSelectors"
     }
 , Type
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "TypeSynonym"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "TypeSynonym"
     }
 , Data
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "DataType"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "DataType"
     }
 , Data
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "DataTypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "DataTypeWithSelectors"
     }
 , NewType
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Newtype"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Newtype"
     }
 , NewType
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "NewtypeWithSelectors"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "NewtypeWithSelectors"
     }
 , Class
-    { symbolModule = ModuleName "Prelude"
-    , symbolName = Ident "Class"
+    { symbolModule = ModuleName () "Prelude"
+    , symbolName = Ident () "Class"
     }
 , Value
-    { symbolModule = ModuleName "SelfReExport"
-    , symbolName = Ident "local"
+    { symbolModule = ModuleName () "SelfReExport"
+    , symbolName = Ident () "local"
     }
 , Data
-    { symbolModule = ModuleName "SelfReExport"
-    , symbolName = Ident "Local"
+    { symbolModule = ModuleName () "SelfReExport"
+    , symbolName = Ident () "Local"
     }
 ]
diff --git a/tests/exports/SimpleData.hs.golden b/tests/exports/SimpleData.hs.golden
--- a/tests/exports/SimpleData.hs.golden
+++ b/tests/exports/SimpleData.hs.golden
@@ -1,8 +1,10 @@
 [ Data
-    { symbolModule = ModuleName "SimpleData" , symbolName = Ident "A" }
+    { symbolModule = ModuleName () "SimpleData"
+    , symbolName = Ident () "A"
+    }
 , Constructor
-    { symbolModule = ModuleName "SimpleData"
-    , symbolName = Ident "A"
-    , typeName = Ident "A"
+    { symbolModule = ModuleName () "SimpleData"
+    , symbolName = Ident () "A"
+    , typeName = Ident () "A"
     }
 ]
diff --git a/tests/exports/SimpleTypes.hs.golden b/tests/exports/SimpleTypes.hs.golden
--- a/tests/exports/SimpleTypes.hs.golden
+++ b/tests/exports/SimpleTypes.hs.golden
@@ -1,29 +1,29 @@
 [ Data
-    { symbolModule = ModuleName "SimpleTypes"
-    , symbolName = Ident "A"
+    { symbolModule = ModuleName () "SimpleTypes"
+    , symbolName = Ident () "A"
     }
 , Constructor
-    { symbolModule = ModuleName "SimpleTypes"
-    , symbolName = Ident "B"
-    , typeName = Ident "A"
+    { symbolModule = ModuleName () "SimpleTypes"
+    , symbolName = Ident () "B"
+    , typeName = Ident () "A"
     }
 , Selector
-    { symbolModule = ModuleName "SimpleTypes"
-    , symbolName = Ident "c"
-    , typeName = Ident "A"
-    , constructors = [ Ident "B" ]
+    { symbolModule = ModuleName () "SimpleTypes"
+    , symbolName = Ident () "c"
+    , typeName = Ident () "A"
+    , constructors = [ Ident () "B" ]
     }
 , NewType
-    { symbolModule = ModuleName "SimpleTypes"
-    , symbolName = Ident "G"
+    { symbolModule = ModuleName () "SimpleTypes"
+    , symbolName = Ident () "G"
     }
 , Constructor
-    { symbolModule = ModuleName "SimpleTypes"
-    , symbolName = Ident "H"
-    , typeName = Ident "G"
+    { symbolModule = ModuleName () "SimpleTypes"
+    , symbolName = Ident () "H"
+    , typeName = Ident () "G"
     }
 , Type
-    { symbolModule = ModuleName "SimpleTypes"
-    , symbolName = Ident "L"
+    { symbolModule = ModuleName () "SimpleTypes"
+    , symbolName = Ident () "L"
     }
 ]
diff --git a/tests/exports/SimpleValue.hs.golden b/tests/exports/SimpleValue.hs.golden
--- a/tests/exports/SimpleValue.hs.golden
+++ b/tests/exports/SimpleValue.hs.golden
@@ -1,5 +1,5 @@
 [ Value
-    { symbolModule = ModuleName "SimpleValue"
-    , symbolName = Ident "a"
+    { symbolModule = ModuleName () "SimpleValue"
+    , symbolName = Ident () "a"
     }
 ]
diff --git a/tests/imports/ExplicitPreludeQualified.hs.golden b/tests/imports/ExplicitPreludeQualified.hs.golden
--- a/tests/imports/ExplicitPreludeQualified.hs.golden
+++ b/tests/imports/ExplicitPreludeQualified.hs.golden
@@ -1,124 +1,126 @@
 fromList
-  [ ( Qual (ModuleName "Prelude") (Ident "Class")
+  [ ( Qual () (ModuleName () "Prelude") (Ident () "Class")
     , [ Class
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Constructor1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Constructor1")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor1"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor1"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Constructor2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Constructor2")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor2"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor2"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "DataType")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "DataType")
     , [ Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "DataTypeWithSelectors")
+  , ( Qual
+        () (ModuleName () "Prelude") (Ident () "DataTypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
-          , typeName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
+          , typeName = Ident () "DataTypeWithSelectors"
           }
       , Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Newtype")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Newtype")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
-          , typeName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
+          , typeName = Ident () "Newtype"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "NewtypeWithSelectors")
+  , ( Qual
+        () (ModuleName () "Prelude") (Ident () "NewtypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
-          , typeName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
+          , typeName = Ident () "NewtypeWithSelectors"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "TypeSynonym")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "TypeSynonym")
     , [ Type
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "TypeSynonym"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "TypeSynonym"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "function")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "function")
     , [ Value
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "function"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "function"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "method1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "method1")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method1"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method1"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "method2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "method2")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method2"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method2"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "selector1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "selector1")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector1"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector1"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "selector2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "selector2")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector2"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector2"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "unNewtype")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "unNewtype")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "unNewtype"
-          , typeName = Ident "NewtypeWithSelectors"
-          , constructors = [ Ident "NewtypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "unNewtype"
+          , typeName = Ident () "NewtypeWithSelectors"
+          , constructors = [ Ident () "NewtypeWithSelectors" ]
           }
       ]
     )
diff --git a/tests/imports/Hiding.hs.golden b/tests/imports/Hiding.hs.golden
--- a/tests/imports/Hiding.hs.golden
+++ b/tests/imports/Hiding.hs.golden
@@ -1,117 +1,118 @@
 fromList
-  [ ( Qual (ModuleName "Prelude") (Ident "Constructor2")
+  [ ( Qual () (ModuleName () "Prelude") (Ident () "Constructor2")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor2"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor2"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "DataType")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "DataType")
     , [ Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "DataTypeWithSelectors")
+  , ( Qual
+        () (ModuleName () "Prelude") (Ident () "DataTypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
-          , typeName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
+          , typeName = Ident () "DataTypeWithSelectors"
           }
       , Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "TypeSynonym")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "TypeSynonym")
     , [ Type
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "TypeSynonym"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "TypeSynonym"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "function")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "function")
     , [ Value
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "function"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "function"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "method2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "method2")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method2"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method2"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "selector1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "selector1")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector1"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector1"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( UnQual (Ident "Constructor2")
+  , ( UnQual () (Ident () "Constructor2")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor2"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor2"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "DataType")
+  , ( UnQual () (Ident () "DataType")
     , [ Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "DataTypeWithSelectors")
+  , ( UnQual () (Ident () "DataTypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
-          , typeName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
+          , typeName = Ident () "DataTypeWithSelectors"
           }
       , Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
           }
       ]
     )
-  , ( UnQual (Ident "TypeSynonym")
+  , ( UnQual () (Ident () "TypeSynonym")
     , [ Type
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "TypeSynonym"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "TypeSynonym"
           }
       ]
     )
-  , ( UnQual (Ident "function")
+  , ( UnQual () (Ident () "function")
     , [ Value
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "function"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "function"
           }
       ]
     )
-  , ( UnQual (Ident "method2")
+  , ( UnQual () (Ident () "method2")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method2"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method2"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( UnQual (Ident "selector1")
+  , ( UnQual () (Ident () "selector1")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector1"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector1"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
diff --git a/tests/imports/ImplicitPrelude.hs.golden b/tests/imports/ImplicitPrelude.hs.golden
--- a/tests/imports/ImplicitPrelude.hs.golden
+++ b/tests/imports/ImplicitPrelude.hs.golden
@@ -1,247 +1,249 @@
 fromList
-  [ ( Qual (ModuleName "Prelude") (Ident "Class")
+  [ ( Qual () (ModuleName () "Prelude") (Ident () "Class")
     , [ Class
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Constructor1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Constructor1")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor1"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor1"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Constructor2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Constructor2")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor2"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor2"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "DataType")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "DataType")
     , [ Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "DataTypeWithSelectors")
+  , ( Qual
+        () (ModuleName () "Prelude") (Ident () "DataTypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
-          , typeName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
+          , typeName = Ident () "DataTypeWithSelectors"
           }
       , Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Newtype")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Newtype")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
-          , typeName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
+          , typeName = Ident () "Newtype"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "NewtypeWithSelectors")
+  , ( Qual
+        () (ModuleName () "Prelude") (Ident () "NewtypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
-          , typeName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
+          , typeName = Ident () "NewtypeWithSelectors"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "TypeSynonym")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "TypeSynonym")
     , [ Type
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "TypeSynonym"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "TypeSynonym"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "function")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "function")
     , [ Value
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "function"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "function"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "method1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "method1")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method1"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method1"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "method2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "method2")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method2"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method2"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "selector1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "selector1")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector1"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector1"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "selector2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "selector2")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector2"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector2"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "unNewtype")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "unNewtype")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "unNewtype"
-          , typeName = Ident "NewtypeWithSelectors"
-          , constructors = [ Ident "NewtypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "unNewtype"
+          , typeName = Ident () "NewtypeWithSelectors"
+          , constructors = [ Ident () "NewtypeWithSelectors" ]
           }
       ]
     )
-  , ( UnQual (Ident "Class")
+  , ( UnQual () (Ident () "Class")
     , [ Class
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Class"
           }
       ]
     )
-  , ( UnQual (Ident "Constructor1")
+  , ( UnQual () (Ident () "Constructor1")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor1"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor1"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "Constructor2")
+  , ( UnQual () (Ident () "Constructor2")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor2"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor2"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "DataType")
+  , ( UnQual () (Ident () "DataType")
     , [ Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "DataTypeWithSelectors")
+  , ( UnQual () (Ident () "DataTypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
-          , typeName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
+          , typeName = Ident () "DataTypeWithSelectors"
           }
       , Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
           }
       ]
     )
-  , ( UnQual (Ident "Newtype")
+  , ( UnQual () (Ident () "Newtype")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
-          , typeName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
+          , typeName = Ident () "Newtype"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
           }
       ]
     )
-  , ( UnQual (Ident "NewtypeWithSelectors")
+  , ( UnQual () (Ident () "NewtypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
-          , typeName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
+          , typeName = Ident () "NewtypeWithSelectors"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
           }
       ]
     )
-  , ( UnQual (Ident "TypeSynonym")
+  , ( UnQual () (Ident () "TypeSynonym")
     , [ Type
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "TypeSynonym"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "TypeSynonym"
           }
       ]
     )
-  , ( UnQual (Ident "function")
+  , ( UnQual () (Ident () "function")
     , [ Value
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "function"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "function"
           }
       ]
     )
-  , ( UnQual (Ident "method1")
+  , ( UnQual () (Ident () "method1")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method1"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method1"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( UnQual (Ident "method2")
+  , ( UnQual () (Ident () "method2")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method2"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method2"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( UnQual (Ident "selector1")
+  , ( UnQual () (Ident () "selector1")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector1"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector1"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( UnQual (Ident "selector2")
+  , ( UnQual () (Ident () "selector2")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector2"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector2"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( UnQual (Ident "unNewtype")
+  , ( UnQual () (Ident () "unNewtype")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "unNewtype"
-          , typeName = Ident "NewtypeWithSelectors"
-          , constructors = [ Ident "NewtypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "unNewtype"
+          , typeName = Ident () "NewtypeWithSelectors"
+          , constructors = [ Ident () "NewtypeWithSelectors" ]
           }
       ]
     )
diff --git a/tests/imports/ImportAll.hs.golden b/tests/imports/ImportAll.hs.golden
--- a/tests/imports/ImportAll.hs.golden
+++ b/tests/imports/ImportAll.hs.golden
@@ -1,25 +1,25 @@
 fromList
-  [ ( Qual (ModuleName "Prelude") (Ident "Newtype")
+  [ ( Qual () (ModuleName () "Prelude") (Ident () "Newtype")
     , [ NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
           }
       , Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
-          , typeName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
+          , typeName = Ident () "Newtype"
           }
       ]
     )
-  , ( UnQual (Ident "Newtype")
+  , ( UnQual () (Ident () "Newtype")
     , [ NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
           }
       , Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
-          , typeName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
+          , typeName = Ident () "Newtype"
           }
       ]
     )
diff --git a/tests/imports/ImportList.hs.golden b/tests/imports/ImportList.hs.golden
--- a/tests/imports/ImportList.hs.golden
+++ b/tests/imports/ImportList.hs.golden
@@ -1,75 +1,75 @@
 fromList
-  [ ( Qual (ModuleName "Prelude") (Ident "Constructor1")
+  [ ( Qual () (ModuleName () "Prelude") (Ident () "Constructor1")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor1"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor1"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Constructor2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Constructor2")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor2"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor2"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "DataType")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "DataType")
     , [ Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Newtype")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Newtype")
     , [ NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "function")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "function")
     , [ Value
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "function"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "function"
           }
       ]
     )
-  , ( UnQual (Ident "Constructor1")
+  , ( UnQual () (Ident () "Constructor1")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor1"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor1"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "Constructor2")
+  , ( UnQual () (Ident () "Constructor2")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor2"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor2"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "DataType")
+  , ( UnQual () (Ident () "DataType")
     , [ Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "Newtype")
+  , ( UnQual () (Ident () "Newtype")
     , [ NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
           }
       ]
     )
-  , ( UnQual (Ident "function")
+  , ( UnQual () (Ident () "function")
     , [ Value
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "function"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "function"
           }
       ]
     )
diff --git a/tests/imports/SimpleImport.hs.golden b/tests/imports/SimpleImport.hs.golden
--- a/tests/imports/SimpleImport.hs.golden
+++ b/tests/imports/SimpleImport.hs.golden
@@ -1,247 +1,249 @@
 fromList
-  [ ( Qual (ModuleName "Prelude") (Ident "Class")
+  [ ( Qual () (ModuleName () "Prelude") (Ident () "Class")
     , [ Class
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Constructor1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Constructor1")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor1"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor1"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Constructor2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Constructor2")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor2"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor2"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "DataType")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "DataType")
     , [ Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataType"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "DataTypeWithSelectors")
+  , ( Qual
+        () (ModuleName () "Prelude") (Ident () "DataTypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
-          , typeName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
+          , typeName = Ident () "DataTypeWithSelectors"
           }
       , Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "Newtype")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "Newtype")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
-          , typeName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
+          , typeName = Ident () "Newtype"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "NewtypeWithSelectors")
+  , ( Qual
+        () (ModuleName () "Prelude") (Ident () "NewtypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
-          , typeName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
+          , typeName = Ident () "NewtypeWithSelectors"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "TypeSynonym")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "TypeSynonym")
     , [ Type
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "TypeSynonym"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "TypeSynonym"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "function")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "function")
     , [ Value
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "function"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "function"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "method1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "method1")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method1"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method1"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "method2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "method2")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method2"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method2"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "selector1")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "selector1")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector1"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector1"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "selector2")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "selector2")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector2"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector2"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( Qual (ModuleName "Prelude") (Ident "unNewtype")
+  , ( Qual () (ModuleName () "Prelude") (Ident () "unNewtype")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "unNewtype"
-          , typeName = Ident "NewtypeWithSelectors"
-          , constructors = [ Ident "NewtypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "unNewtype"
+          , typeName = Ident () "NewtypeWithSelectors"
+          , constructors = [ Ident () "NewtypeWithSelectors" ]
           }
       ]
     )
-  , ( UnQual (Ident "Class")
+  , ( UnQual () (Ident () "Class")
     , [ Class
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Class"
           }
       ]
     )
-  , ( UnQual (Ident "Constructor1")
+  , ( UnQual () (Ident () "Constructor1")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor1"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor1"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "Constructor2")
+  , ( UnQual () (Ident () "Constructor2")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Constructor2"
-          , typeName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Constructor2"
+          , typeName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "DataType")
+  , ( UnQual () (Ident () "DataType")
     , [ Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataType"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataType"
           }
       ]
     )
-  , ( UnQual (Ident "DataTypeWithSelectors")
+  , ( UnQual () (Ident () "DataTypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
-          , typeName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
+          , typeName = Ident () "DataTypeWithSelectors"
           }
       , Data
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "DataTypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "DataTypeWithSelectors"
           }
       ]
     )
-  , ( UnQual (Ident "Newtype")
+  , ( UnQual () (Ident () "Newtype")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
-          , typeName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
+          , typeName = Ident () "Newtype"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "Newtype"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "Newtype"
           }
       ]
     )
-  , ( UnQual (Ident "NewtypeWithSelectors")
+  , ( UnQual () (Ident () "NewtypeWithSelectors")
     , [ Constructor
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
-          , typeName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
+          , typeName = Ident () "NewtypeWithSelectors"
           }
       , NewType
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "NewtypeWithSelectors"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "NewtypeWithSelectors"
           }
       ]
     )
-  , ( UnQual (Ident "TypeSynonym")
+  , ( UnQual () (Ident () "TypeSynonym")
     , [ Type
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "TypeSynonym"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "TypeSynonym"
           }
       ]
     )
-  , ( UnQual (Ident "function")
+  , ( UnQual () (Ident () "function")
     , [ Value
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "function"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "function"
           }
       ]
     )
-  , ( UnQual (Ident "method1")
+  , ( UnQual () (Ident () "method1")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method1"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method1"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( UnQual (Ident "method2")
+  , ( UnQual () (Ident () "method2")
     , [ Method
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "method2"
-          , className = Ident "Class"
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "method2"
+          , className = Ident () "Class"
           }
       ]
     )
-  , ( UnQual (Ident "selector1")
+  , ( UnQual () (Ident () "selector1")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector1"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector1"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( UnQual (Ident "selector2")
+  , ( UnQual () (Ident () "selector2")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "selector2"
-          , typeName = Ident "DataTypeWithSelectors"
-          , constructors = [ Ident "DataTypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "selector2"
+          , typeName = Ident () "DataTypeWithSelectors"
+          , constructors = [ Ident () "DataTypeWithSelectors" ]
           }
       ]
     )
-  , ( UnQual (Ident "unNewtype")
+  , ( UnQual () (Ident () "unNewtype")
     , [ Selector
-          { symbolModule = ModuleName "Prelude"
-          , symbolName = Ident "unNewtype"
-          , typeName = Ident "NewtypeWithSelectors"
-          , constructors = [ Ident "NewtypeWithSelectors" ]
+          { symbolModule = ModuleName () "Prelude"
+          , symbolName = Ident () "unNewtype"
+          , typeName = Ident () "NewtypeWithSelectors"
+          , constructors = [ Ident () "NewtypeWithSelectors" ]
           }
       ]
     )
diff --git a/tests/run.hs b/tests/run.hs
--- a/tests/run.hs
+++ b/tests/run.hs
@@ -22,8 +22,8 @@
 import Text.Printf
 import qualified Data.Foldable as F
 
-import Language.Haskell.Exts.Annotated hiding (NewType)
-import qualified Language.Haskell.Exts.Annotated as Syntax (DataOrNew(NewType))
+import Language.Haskell.Exts hiding (DataOrNew(NewType))
+import qualified Language.Haskell.Exts.Syntax as Syntax (DataOrNew(NewType))
 import qualified Language.Haskell.Exts as U (ModuleName(ModuleName))
 import Language.Haskell.Names
 import Language.Haskell.Names.Exports
@@ -96,7 +96,7 @@
 environmentTests = goldenTest path run where
   run = do
     baseEnvironment <- loadBase
-    writeSymbols out (baseEnvironment Map.! (U.ModuleName "Prelude"))
+    writeSymbols out (baseEnvironment Map.! (U.ModuleName () "Prelude"))
   path = "tests/environment/Prelude.symbols"
   out = path <.> "out"
 
