-import RnHsSyn ( RenamedTyClDecl, tyClDeclFVs )
-import BasicTypes ( RecFlag(..), NewOrData(..), isRec )
-import HscTypes ( implicitTyThingIds )
-
-import TcMonad
-import TcEnv ( TcEnv, RecTcEnv, TcTyThing(..), TyThing(..), TyThingDetails(..),
- tcExtendKindEnv, tcLookup, tcExtendGlobalEnv, tcExtendGlobalValEnv )
-import TcTyDecls ( tcTyDecl1, kcConDetails )
-import TcClassDcl ( tcClassDecl1 )
-import TcInstDcls ( tcAddDeclCtxt )
-import TcMonoType ( kcHsTyVars, kcHsType, kcHsLiftedSigType, kcHsContext, mkTyClTyVars )
-import TcMType ( unifyKind, newKindVar, zonkKindEnv )
-import TcType ( Type, Kind, mkArrowKind, liftedTypeKind, zipFunTys )
-import Variance ( calcTyConArgVrcs )
-import Class ( Class, mkClass, classTyCon )
-import TyCon ( TyCon, ArgVrcs, AlgTyConFlavour(..),
- tyConKind, tyConDataCons,
- mkSynTyCon, mkAlgTyCon, mkClassTyCon, mkForeignTyCon,
- isRecursiveTyCon )
-import DataCon ( dataConOrigArgTys )
-import Var ( varName )
-import FiniteMap
-import Digraph ( stronglyConnComp, SCC(..) )
-import Name ( Name, getSrcLoc, isTyVarName )
-import NameEnv
-import NameSet
+import BasicTypes ( RecFlag(..), NewOrData(..), StrictnessMark(..) )
+import HscTypes ( implicitTyThings )
+import BuildTyCl ( buildClass, buildAlgTyCon, buildSynTyCon, buildDataCon )
+import TcRnMonad
+import TcEnv ( TcTyThing(..), TyThing(..),
+ tcLookupLocated, tcLookupLocatedGlobal,
+ tcExtendGlobalEnv,
+ tcExtendRecEnv, tcLookupTyVar )
+import TcTyDecls ( calcTyConArgVrcs, calcRecFlags, calcCycleErrs )
+import TcClassDcl ( tcClassSigs, tcAddDeclCtxt )
+import TcHsType ( kcHsTyVars, kcHsLiftedSigType, kcHsSigType, kcCheckHsType,
+ kcHsContext, tcTyVarBndrs, tcHsKindedType, tcHsKindedContext )
+import TcMType ( newKindVar, checkValidTheta, checkValidType, checkFreeness,
+ UserTypeCtxt(..), SourceTyCtxt(..) )
+import TcUnify ( unifyKind )
+import TcType ( TcKind, ThetaType, TcType, tyVarsOfType,
+ mkArrowKind, liftedTypeKind,
+ tcSplitSigmaTy, tcEqType )
+import Type ( splitTyConApp_maybe, pprThetaArrow, pprParendType )
+import FieldLabel ( fieldLabelName, fieldLabelType )
+import Generics ( validGenericMethodType, canDoGenerics )
+import Class ( Class, className, classTyCon, DefMeth(..), classBigSig, classTyVars )
+import TyCon ( TyCon, ArgVrcs, DataConDetails(..),
+ tyConDataCons, mkForeignTyCon, isProductTyCon, isRecursiveTyCon,
+ tyConTheta, getSynTyConDefn, tyConDataCons, isSynTyCon, tyConName )
+import DataCon ( DataCon, dataConWrapId, dataConName, dataConSig, dataConFieldLabels )
+import Var ( TyVar, idType, idName )
+import VarSet ( elemVarSet )
+import Name ( Name, getSrcLoc )