diff --git a/ghc/compiler/coreSyn/CoreLint.lhs b/ghc/compiler/coreSyn/CoreLint.lhs
index d4dffadb7849445a69470fa65bfc996ea469dc80..919b6e87632422a7cad92f56245baf403c732c99 100644
--- a/ghc/compiler/coreSyn/CoreLint.lhs
+++ b/ghc/compiler/coreSyn/CoreLint.lhs
@@ -17,12 +17,11 @@ import CmdLineOpts      ( opt_D_show_passes, opt_DoCoreLinting )
 import CoreSyn
 
 import Bag
-import Kind		( hasMoreBoxityInfo, Kind{-instance-}, 
-			  isTypeKind, isBoxedTypeKind {- TEMP --SOF -} )
+import Kind		( hasMoreBoxityInfo, Kind{-instance-} )
 import Literal		( literalType, Literal{-instance-} )
 import Id		( idType, isBottomingId, dataConRepType, isDataCon, isNewCon, isAlgCon,
 			  dataConArgTys, GenId{-instances-},
-			  emptyIdSet, mkIdSet, intersectIdSets,
+			  emptyIdSet, mkIdSet,
 			  unionIdSets, elementOfIdSet, IdSet,
 			  Id
 			)
@@ -32,12 +31,12 @@ import Name		( isLocallyDefined, getSrcLoc, Name{-instance NamedThing-},
 import PprCore
 import ErrUtils		( doIfSet, ghcExit )
 import PprType		( GenType, GenTyVar, TyCon )
-import PrimOp		( primOpType, PrimOp(..) )
+import PrimOp		( primOpType )
 import PrimRep		( PrimRep(..) )
 import SrcLoc		( SrcLoc )
 import Type		( mkFunTy, splitFunTy_maybe, mkForAllTy,
 			  splitForAllTy_maybe,
-			  isUnpointedType, typeKind, instantiateTy, splitSigmaTy,
+			  isUnpointedType, typeKind, instantiateTy,
 			  splitAlgTyConApp_maybe, Type
 			)
 import TyCon		( isPrimTyCon, isDataTyCon )
@@ -47,7 +46,7 @@ import Unique		( Unique )
 import Util		( zipEqual )
 import Outputable
 
-infixr 9 `thenL`, `seqL`, `thenMaybeL`, `seqMaybeL`
+infixr 9 `thenL`, `seqL`, `thenMaybeL`
 \end{code}
 
 %************************************************************************
@@ -492,12 +491,6 @@ thenMaybeL m k spec loc scope errs
       (Nothing, errs2) -> (Nothing, errs2)
       (Just r,  errs2) -> k r spec loc scope errs2
 
-seqMaybeL :: LintM (Maybe a) -> LintM (Maybe b) -> LintM (Maybe b)
-seqMaybeL m k spec loc scope errs
-  = case m spec loc scope errs of
-      (Nothing, errs2) -> (Nothing, errs2)
-      (Just _,  errs2) -> k spec loc scope errs2
-
 mapL :: (a -> LintM b) -> [a] -> LintM [b]
 mapL f [] = returnL []
 mapL f (x:xs)
@@ -524,9 +517,6 @@ checkIfSpecDoneL True  msg spec  loc scope errs = ((), errs)
 checkIfSpecDoneL False msg True  loc scope errs = ((), addErr errs msg loc)
 checkIfSpecDoneL False msg False loc scope errs = ((), errs)
 
-addErrIfL pred spec
-  = if pred then addErrL spec else returnL ()
-
 addErrL :: ErrMsg -> LintM ()
 addErrL msg spec loc scope errs = ((), addErr errs msg loc)
 
@@ -591,21 +581,6 @@ mkCaseAltMsg alts
   = ($$) (ptext SLIT("Type of case alternatives not the same:"))
 	    (ppr alts)
 
-mkCaseDataConMsg :: CoreExpr -> ErrMsg
-mkCaseDataConMsg expr
-  = ($$) (ptext SLIT("A case scrutinee not of data constructor type:"))
-	    (pprCoreExpr expr)
-
-mkCaseNotPrimMsg :: TyCon -> ErrMsg
-mkCaseNotPrimMsg tycon
-  = ($$) (ptext SLIT("A primitive case on a non-primitive type:"))
-	    (ppr tycon)
-
-mkCasePrimMsg :: TyCon -> ErrMsg
-mkCasePrimMsg tycon
-  = ($$) (ptext SLIT("An algebraic case on a primitive type:"))
-	    (ppr tycon)
-
 mkCaseAbstractMsg :: TyCon -> ErrMsg
 mkCaseAbstractMsg tycon
   = ($$) (ptext SLIT("An algebraic case on some weird type:"))
@@ -690,10 +665,4 @@ mkRhsPrimMsg binder rhs
 		     ppr binder],
 	      hsep [ptext SLIT("Binder's type:"), ppr (idType binder)]
 	     ]
-
-mkSpecTyAppMsg :: CoreArg -> ErrMsg
-mkSpecTyAppMsg arg
-  = ($$)
-      (ptext SLIT("Unboxed types in a type application (after specialisation):"))
-      (ppr arg)
 \end{code}
diff --git a/ghc/compiler/deSugar/Check.lhs b/ghc/compiler/deSugar/Check.lhs
index c4901cbc8c151e5929d4721d598ad446f7bfc69e..2eccc3e3e7f2b2986e5d8bb8cfe29f0f271c4fe6 100644
--- a/ghc/compiler/deSugar/Check.lhs
+++ b/ghc/compiler/deSugar/Check.lhs
@@ -9,21 +9,11 @@
 module Check ( check , ExhaustivePat, WarningPat, BoxedString(..) ) where
 
 
-import {-# SOURCE #-} DsExpr  ( dsExpr  )
-import {-# SOURCE #-} DsBinds ( dsBinds )
-
 import HsSyn		
-import TcHsSyn		( TypecheckedPat, 
-                          TypecheckedMatch,
-			  TypecheckedHsBinds, 
-                          TypecheckedHsExpr	
-                        )
+import TcHsSyn		( TypecheckedPat )
 import DsHsSyn		( outPatType ) 
 import CoreSyn		
 
-import DsMonad		( DsM, DsMatchContext(..),
-			  DsMatchKind(..)
-                        )
 import DsUtils		( EquationInfo(..),
 			  MatchResult(..),
 			  EqnNo,
@@ -32,7 +22,6 @@ import DsUtils		( EquationInfo(..),
  			)
 import Id		( idType,
 			  Id,
-			  idName,
                           isTupleCon,			   
                           getIdArity
 			)
diff --git a/ghc/compiler/deSugar/Desugar.lhs b/ghc/compiler/deSugar/Desugar.lhs
index 8bee5d613ed913add0fcc2ddeae9d1479428932e..61ce1e65750071d6f02bcd5ef41f44e5101338f7 100644
--- a/ghc/compiler/deSugar/Desugar.lhs
+++ b/ghc/compiler/deSugar/Desugar.lhs
@@ -9,25 +9,20 @@ module Desugar ( deSugar, pprDsWarnings ) where
 #include "HsVersions.h"
 
 import CmdLineOpts	( opt_D_dump_ds )
-import HsSyn		( HsBinds, HsExpr, MonoBinds
-			)
-import TcHsSyn		( TypecheckedMonoBinds, TypecheckedHsExpr
-			)
+import HsSyn		( MonoBinds )
+import TcHsSyn		( TypecheckedMonoBinds )
 import CoreSyn
 import PprCore		( pprCoreBindings )
-import Name             ( isExported )
 import DsMonad
 import DsBinds		( dsMonoBinds )
 import DsUtils
 
-import Bag		( unionBags, isEmptyBag )
-import BasicTypes       ( Module, RecFlag(..) )
-import CmdLineOpts	( opt_DoCoreLinting, opt_SccGroup, opt_SccProfilingOn )
-import CostCentre       ( IsCafCC(..), mkAutoCC )
+import Bag		( isEmptyBag )
+import BasicTypes       ( Module )
+import CmdLineOpts	( opt_SccGroup, opt_SccProfilingOn )
 import CoreLift		( liftCoreBindings )
 import CoreLint		( lintCoreBindings )
-import Id		( nullIdEnv, mkIdEnv, idType, 
-			  DictVar, GenId, Id )
+import Id		( nullIdEnv, GenId, Id )
 import ErrUtils		( dumpIfSet, doIfSet )
 import Outputable
 import UniqSupply	( splitUniqSupply, UniqSupply )
diff --git a/ghc/compiler/deSugar/DsBinds.lhs b/ghc/compiler/deSugar/DsBinds.lhs
index c365d145003560f895a6bfe2342334ded4a4ae21..8a0526232f22b8a59086d61e77689e0b10ad1aaf 100644
--- a/ghc/compiler/deSugar/DsBinds.lhs
+++ b/ghc/compiler/deSugar/DsBinds.lhs
@@ -30,15 +30,13 @@ import BasicTypes       ( Module, RecFlag(..) )
 import CmdLineOpts	( opt_SccProfilingOn, opt_AutoSccsOnAllToplevs, 
 			  opt_AutoSccsOnExportedToplevs
 		        )
-import CostCentre	( mkAutoCC, IsCafCC(..), mkAllDictsCC, preludeDictsCostCentre )
-import Id		( idType, DictVar, Id )
+import CostCentre	( mkAutoCC, IsCafCC(..), mkAllDictsCC )
+import Id		( idType, Id )
 import Name		( isExported )
 import Type		( mkTyVarTy, isDictTy, instantiateTy
 			)
-import TyVar		( tyVarSetToList, zipTyVarEnv )
+import TyVar		( zipTyVarEnv )
 import TysPrim		( voidTy )
-import Util		( isIn )
-import Outputable
 \end{code}
 
 %************************************************************************
diff --git a/ghc/compiler/deSugar/DsCCall.lhs b/ghc/compiler/deSugar/DsCCall.lhs
index 019e207330dc13fcd75e1ac243d487d76f35e197..eab46af4e0c0a5c91e98de9c3d54919f65096c64 100644
--- a/ghc/compiler/deSugar/DsCCall.lhs
+++ b/ghc/compiler/deSugar/DsCCall.lhs
@@ -15,7 +15,7 @@ import DsUtils
 
 import TcHsSyn		( maybeBoxedPrimType )
 import CoreUtils	( coreExprType )
-import Id		( Id(..), dataConArgTys, dataConTyCon, idType )
+import Id		( Id(..), dataConArgTys, idType )
 import Maybes		( maybeToBool )
 import PprType		( GenType{-instances-} )
 import PrelVals		( packStringForCId )
@@ -25,7 +25,7 @@ import Type		( isUnpointedType, splitAlgTyConApp_maybe,
 			  Type
 			)
 import TyCon		( tyConDataCons )
-import TysPrim		( byteArrayPrimTy, realWorldTy,  realWorldStatePrimTy,
+import TysPrim		( byteArrayPrimTy, realWorldStatePrimTy,
 			  byteArrayPrimTyCon, mutableByteArrayPrimTyCon )
 import TysWiredIn	( getStatePairingConInfo,
 			  unitDataCon, stringTy,
diff --git a/ghc/compiler/deSugar/DsExpr.lhs b/ghc/compiler/deSugar/DsExpr.lhs
index 06e7f875bf1809ff7fa805fe7d4df1756f2f5808..d57b125a85043da8e338d0bb61afa43039c39aec 100644
--- a/ghc/compiler/deSugar/DsExpr.lhs
+++ b/ghc/compiler/deSugar/DsExpr.lhs
@@ -25,35 +25,30 @@ import CoreSyn
 
 import DsMonad
 import DsCCall		( dsCCall )
-import DsHsSyn		( outPatType )
 import DsListComp	( dsListComp )
-import DsUtils		( mkAppDs, mkConDs, mkPrimDs, dsExprToAtomGivenTy, mkTupleExpr,
-			  mkErrorAppDs, showForErr, EquationInfo,
-			  MatchResult, DsCoreArg
+import DsUtils		( mkAppDs, mkConDs, dsExprToAtomGivenTy,
+			  mkErrorAppDs, showForErr, DsCoreArg
 			)
 import Match		( matchWrapper )
 
-import CoreUtils	( coreExprType, substCoreExpr, argToExpr,
-			  mkCoreIfThenElse, unTagBinders )
+import CoreUtils	( coreExprType, mkCoreIfThenElse )
 import CostCentre	( mkUserCC )
-import FieldLabel	( fieldLabelType, FieldLabel )
-import Id		( idType, nullIdEnv, addOneToIdEnv,
-			  dataConTyCon, dataConArgTys, dataConFieldLabels,
+import FieldLabel	( FieldLabel )
+import Id		( dataConTyCon, dataConArgTys, dataConFieldLabels,
 			  recordSelectorFieldLabel, Id
 			)
 import Literal		( mkMachInt, Literal(..) )
 import Name		( Name{--O only-} )
-import PrelVals		( rEC_CON_ERROR_ID, rEC_UPD_ERROR_ID, voidId )
+import PrelVals		( rEC_CON_ERROR_ID, rEC_UPD_ERROR_ID )
 import TyCon		( isNewTyCon )
-import Type		( splitSigmaTy, splitFunTys, typePrimRep, mkTyConApp,
-			  splitAlgTyConApp, splitTyConApp_maybe, applyTy,
+import Type		( splitFunTys, typePrimRep, mkTyConApp,
+			  splitAlgTyConApp, splitTyConApp_maybe,
 			  splitAppTy, Type
 			)
-import TysPrim		( voidTy )
-import TysWiredIn	( mkTupleTy, tupleCon, nilDataCon, consDataCon, listTyCon, mkListTy,
+import TysWiredIn	( tupleCon, nilDataCon, consDataCon, listTyCon, mkListTy,
 			  charDataCon, charTy
 			)
-import TyVar		( addToTyVarEnv, GenTyVar{-instance Eq-} )
+import TyVar		( GenTyVar{-instance Eq-} )
 import Maybes		( maybeToBool )
 import Util		( zipEqual )
 import Outputable
diff --git a/ghc/compiler/deSugar/DsHsSyn.lhs b/ghc/compiler/deSugar/DsHsSyn.lhs
index 2e6b8882efec9c1e061618e592493d9102515921..e6e431db92807d9f24d0df1dd3cf6bacf1994fcb 100644
--- a/ghc/compiler/deSugar/DsHsSyn.lhs
+++ b/ghc/compiler/deSugar/DsHsSyn.lhs
@@ -8,8 +8,8 @@ module DsHsSyn where
 
 #include "HsVersions.h"
 
-import HsSyn		( OutPat(..), HsBinds(..), MonoBinds(..),
-			  Sig, HsExpr, GRHSsAndBinds, Match, HsLit )
+import HsSyn		( OutPat(..), MonoBinds(..),
+			  HsExpr, GRHSsAndBinds, Match, HsLit )
 import TcHsSyn		( TypecheckedPat,
 			  TypecheckedMonoBinds )
 
diff --git a/ghc/compiler/deSugar/DsMonad.lhs b/ghc/compiler/deSugar/DsMonad.lhs
index 90e9958846baa5b877a7ff883f2fe3f34fb3a3b7..bf18761cf58bfddbd0ee8a2621d3f2e1a97445b9 100644
--- a/ghc/compiler/deSugar/DsMonad.lhs
+++ b/ghc/compiler/deSugar/DsMonad.lhs
@@ -26,8 +26,6 @@ module DsMonad (
 
 import Bag		( emptyBag, snocBag, bagToList, Bag )
 import BasicTypes       ( Module )
-import CoreSyn		( CoreExpr )
-import CoreUtils	( substCoreExpr )
 import ErrUtils 	( WarnMsg )
 import HsSyn		( OutPat )
 import Id		( mkSysLocal, mkIdWithNewUniq,
@@ -41,9 +39,8 @@ import TcHsSyn		( TypecheckedPat )
 import Type             ( Type )
 import TyVar		( cloneTyVar, TyVar )
 import UniqSupply	( splitUniqSupply, getUnique, getUniques,
-			  mapUs, thenUs, returnUs, UniqSM,
-			  UniqSupply )
-import Util		( assoc, mapAccumL, zipWithEqual, panic )
+			  UniqSM, UniqSupply )
+import Util		( zipWithEqual, panic )
 
 infixr 9 `thenDs`
 \end{code}
diff --git a/ghc/compiler/deSugar/DsUtils.lhs b/ghc/compiler/deSugar/DsUtils.lhs
index 1254d9a6744471a828592006380e1beac1c3fa44..cdc3fdd70965b63a1f3dcdb1617d31f717f8e6ab 100644
--- a/ghc/compiler/deSugar/DsUtils.lhs
+++ b/ghc/compiler/deSugar/DsUtils.lhs
@@ -29,10 +29,9 @@ module DsUtils (
 
 #include "HsVersions.h"
 
-import {-# SOURCE #-} Match (match, matchSimply )
+import {-# SOURCE #-} Match ( matchSimply )
 
-import HsSyn		( HsExpr(..), OutPat(..), HsLit(..), Fixity,
-			  Match, HsBinds, Stmt, DoOrListComp, HsType, ArithSeqInfo )
+import HsSyn		( OutPat(..), Stmt, DoOrListComp )
 import TcHsSyn		( TypecheckedPat )
 import DsHsSyn		( outPatType, collectTypedPatBinders )
 import CoreSyn
@@ -42,17 +41,17 @@ import DsMonad
 import CoreUtils	( coreExprType, mkCoreIfThenElse )
 import PrelVals		( iRREFUT_PAT_ERROR_ID, voidId )
 import Id		( idType, dataConArgTys, 
-			  DataCon, DictVar, Id, GenId )
+			  DataCon, Id, GenId )
 import Literal		( Literal(..) )
 import PrimOp           ( PrimOp )
 import TyCon		( isNewTyCon, tyConDataCons )
-import Type		( mkTyVarTys, mkRhoTy, mkForAllTys, mkFunTy,
+import Type		( mkRhoTy, mkFunTy,
 			  isUnpointedType, mkTyConApp, splitAlgTyConApp,
 			  Type
 			)
 import BasicTypes	( Unused )
 import TysPrim		( voidTy )
-import TysWiredIn	( tupleTyCon, unitDataCon, tupleCon )
+import TysWiredIn	( unitDataCon, tupleCon )
 import UniqSet		( mkUniqSet, minusUniqSet, uniqSetToList, UniqSet )
 import Unique		( Unique )
 import Outputable
diff --git a/ghc/compiler/deSugar/Match.lhs b/ghc/compiler/deSugar/Match.lhs
index 55a94542a91203f0089f42d4a6ccd625a0838976..064ac8658448ece035ebecde4824b84f359eda4a 100644
--- a/ghc/compiler/deSugar/Match.lhs
+++ b/ghc/compiler/deSugar/Match.lhs
@@ -13,12 +13,12 @@ import {-# SOURCE #-} DsExpr  ( dsExpr  )
 import {-# SOURCE #-} DsBinds ( dsBinds )
 
 import CmdLineOpts	( opt_WarnIncompletePatterns, opt_WarnOverlappingPatterns,
-			  opt_PprUserLength,opt_WarnSimplePatterns
+			  opt_WarnSimplePatterns
      			)
 import HsSyn		
 import TcHsSyn		( TypecheckedPat, TypecheckedMatch,
 			  TypecheckedHsBinds, TypecheckedHsExpr	)
-import DsHsSyn		( outPatType, collectTypedPatBinders )
+import DsHsSyn		( outPatType )
 import Check            ( check, ExhaustivePat, WarningPat, BoxedString )
 import CoreSyn
 import CoreUtils	( coreExprType )
@@ -35,7 +35,7 @@ import Name		( Name {--O only-} )
 import PprType		( GenType{-instance-}, GenTyVar{-ditto-} )        
 import PrelVals		( pAT_ERROR_ID )
 import Type		( isUnpointedType, splitAlgTyConApp,
-			  instantiateTauTy, Type
+			  Type
 			)
 import TyVar		( TyVar )
 import TysPrim		( intPrimTy, charPrimTy, floatPrimTy, doublePrimTy,
@@ -44,7 +44,7 @@ import TysPrim		( intPrimTy, charPrimTy, floatPrimTy, doublePrimTy,
 import TysWiredIn	( nilDataCon, consDataCon, mkTupleTy, mkListTy,
 			  charTy, charDataCon, intTy, intDataCon,
 			  floatTy, floatDataCon, doubleTy, tupleCon,
-			  doubleDataCon, stringTy, addrTy,
+			  doubleDataCon, addrTy,
 			  addrDataCon, wordTy, wordDataCon
 			)
 import UniqSet
diff --git a/ghc/compiler/deSugar/MatchLit.lhs b/ghc/compiler/deSugar/MatchLit.lhs
index b3e645d4a1675eeebd3c24717e9f02c1a937d9e2..c9b6bb18b89e37aaa151c0182533e30018863efe 100644
--- a/ghc/compiler/deSugar/MatchLit.lhs
+++ b/ghc/compiler/deSugar/MatchLit.lhs
@@ -12,10 +12,8 @@ import {-# SOURCE #-} Match  ( match )
 import {-# SOURCE #-} DsExpr ( dsExpr )
 
 import HsSyn		( HsLit(..), OutPat(..), HsExpr(..), Fixity,
-			  Match, HsBinds, Stmt(..), DoOrListComp, HsType, ArithSeqInfo )
-import TcHsSyn		( TypecheckedHsExpr, TypecheckedHsBinds,
-			  TypecheckedPat
-			)
+			  Match, HsBinds, DoOrListComp, HsType, ArithSeqInfo )
+import TcHsSyn		( TypecheckedHsExpr, TypecheckedPat )
 import CoreSyn		( CoreExpr, CoreBinding, GenCoreExpr(..), GenCoreBinding(..) )
 import Id		( GenId {- instance Eq -}, Id )
 
@@ -24,7 +22,7 @@ import DsUtils
 
 import Literal		( mkMachInt, Literal(..) )
 import Maybes		( catMaybes )
-import Type		( isUnpointedType, Type )
+import Type		( Type )
 import Util		( panic, assertPanic )
 \end{code}
 
diff --git a/ghc/compiler/simplCore/SimplVar.lhs b/ghc/compiler/simplCore/SimplVar.lhs
index 88d91d06d460d8eee1002fdf2f7409e5d0678ebb..caafa54cbfc250398de979bbe2245517bb341565 100644
--- a/ghc/compiler/simplCore/SimplVar.lhs
+++ b/ghc/compiler/simplCore/SimplVar.lhs
@@ -12,12 +12,9 @@ module SimplVar (
 
 import {-# SOURCE #-} Simplify ( simplExpr )
 
-import Constants	( uNFOLDING_USE_THRESHOLD,
-			  uNFOLDING_CON_DISCOUNT_WEIGHT
-			)
 import CmdLineOpts	( switchIsOn, SimplifierSwitch(..) )
 import CoreSyn
-import CoreUnfold	( Unfolding(..), UfExpr, RdrName, UnfoldingGuidance(..), 
+import CoreUnfold	( Unfolding(..), UnfoldingGuidance(..), 
 			  SimpleUnfolding(..),
 			  FormSummary, whnfOrBottom,
 			  smallEnoughToInline )
diff --git a/ghc/compiler/specialise/SpecUtils.lhs b/ghc/compiler/specialise/SpecUtils.lhs
index 6a5f4a88cb41407ca6472c61abaecc718db47c3f..4c03f1cff2f17df06ab5855b4b474d10032540d9 100644
--- a/ghc/compiler/specialise/SpecUtils.lhs
+++ b/ghc/compiler/specialise/SpecUtils.lhs
@@ -21,27 +21,22 @@ module SpecUtils (
 #include "HsVersions.h"
 
 import CmdLineOpts	( opt_SpecialiseOverloaded, opt_SpecialiseUnboxed,
-			  opt_SpecialiseAll, opt_PprUserLength
+			  opt_SpecialiseAll
 			)
 import Bag		( isEmptyBag, bagToList, Bag )
 import Class		( Class )
 import FiniteMap	( emptyFM, addListToFM_C, plusFM_C, keysFM,
 			  lookupWithDefaultFM
 			)
-import Id		( idType, isDictFunId, 
-			  isDefaultMethodId_maybe, 
-			  Id
-			)
+import Id		( Id )
 import Maybes		( maybeToBool, catMaybes, firstJust )
 import Name		( OccName, pprOccName, modAndOcc, NamedThing(..) )
 import Outputable
-import PprType		( pprGenType, pprParendGenType, pprMaybeTy,
-			  TyCon
-			)
+import PprType		( pprParendGenType, pprMaybeTy, TyCon )
 import TyCon		( tyConTyVars )
 import Type		( mkSigmaTy, instantiateTauTy, instantiateThetaTy,
 			  splitSigmaTy, mkTyVarTy, mkForAllTys,
-			  getTyVar_maybe, isUnboxedType, Type
+			  isUnboxedType, Type
 			)
 import TyVar		( TyVar, mkTyVarEnv )
 import Util		( equivClasses, zipWithEqual,
diff --git a/ghc/compiler/typecheck/TcGenDeriv.lhs b/ghc/compiler/typecheck/TcGenDeriv.lhs
index 7e140354f618c1c48b8d51e96f8b7a8e29bbcffa..214564c9f4cacfe5db282deeb19a94c9e163d028 100644
--- a/ghc/compiler/typecheck/TcGenDeriv.lhs
+++ b/ghc/compiler/typecheck/TcGenDeriv.lhs
@@ -32,7 +32,7 @@ import HsSyn		( InPat(..), HsExpr(..), MonoBinds(..), GRHS(..),
 			  HsBinds(..), DoOrListComp(..),
 			  unguardedRHS
 			)
-import RdrHsSyn		( RdrName(..), varQual, varUnqual, mkOpApp,
+import RdrHsSyn		( RdrName(..), varUnqual, mkOpApp,
 			  RdrNameMonoBinds, RdrNameHsExpr, RdrNamePat
 			)
 import BasicTypes	( IfaceFlavour(..), RecFlag(..) )
diff --git a/ghc/compiler/typecheck/TcHsSyn.lhs b/ghc/compiler/typecheck/TcHsSyn.lhs
index 30c6100838a83927af5c0853ed20eaa4753cae40..086e58d2301ce1581b32af35a7f69d977266ebfc 100644
--- a/ghc/compiler/typecheck/TcHsSyn.lhs
+++ b/ghc/compiler/typecheck/TcHsSyn.lhs
@@ -37,8 +37,7 @@ module TcHsSyn (
 -- friends:
 import HsSyn	-- oodles of it
 import Id	( GenId(..), IdDetails,	-- Can meddle modestly with Ids
-		  DictVar, idType, dataConArgTys,
-		  Id
+		  dataConArgTys, Id
 		)
 
 -- others:
@@ -53,14 +52,13 @@ import TcType	( TcType, TcMaybe, TcTyVar, TcBox,
 		  zonkTcTypeToType, zonkTcTyVarToTyVar, zonkTcType
 		)
 import TyCon	( isDataTyCon )
-import Type	( mkTyVarTy, tyVarsOfType, splitAlgTyConApp_maybe, isUnpointedType, Type )
-import TyVar	( TyVar, TyVarEnv, emptyTyVarEnv, growTyVarEnvList, emptyTyVarSet )
+import Type	( mkTyVarTy, splitAlgTyConApp_maybe, isUnpointedType, Type )
+import TyVar	( TyVar, TyVarEnv, emptyTyVarEnv, growTyVarEnvList )
 import TysPrim	( voidTy )
 import CoreSyn  ( GenCoreExpr )
 import Unique	( Unique )		-- instances
 import Bag
 import UniqFM
-import Util	( zipEqual )
 import Outputable
 \end{code}
 
diff --git a/ghc/compiler/typecheck/TcInstDcls.lhs b/ghc/compiler/typecheck/TcInstDcls.lhs
index 32a9c3ab23e143240e3e93be10567968e925eed6..578683771307ce8df552b45504381b610d146e03 100644
--- a/ghc/compiler/typecheck/TcInstDcls.lhs
+++ b/ghc/compiler/typecheck/TcInstDcls.lhs
@@ -22,8 +22,8 @@ import RnHsSyn		( RenamedHsBinds, RenamedMonoBinds,
 			  RenamedSig, RenamedHsDecl
 			)
 import TcHsSyn		( TcMonoBinds, TcIdOcc(..), TcIdBndr, 
-			  maybeBoxedPrimType, mkHsTyLam, mkHsTyApp,
-			  )
+			  maybeBoxedPrimType
+			)
 
 import TcBinds		( tcPragmaSigs, sigThetaCtxt )
 import TcClassDcl	( tcMethodBind, badMethodErr )
@@ -47,7 +47,7 @@ import Bag		( emptyBag, unitBag, unionBags, unionManyBags,
 			)
 import CmdLineOpts	( opt_GlasgowExts, opt_WarnMissingMethods )
 import Class		( classBigSig, Class )
-import Id		( idType, isNullaryDataCon, dataConArgTys, Id )
+import Id		( isNullaryDataCon, dataConArgTys, Id )
 import Maybes 		( maybeToBool, seqMaybe, catMaybes )
 import Name		( nameOccName, mkLocalName,
 			  isLocallyDefined, Module,
@@ -750,9 +750,6 @@ instTypeErr clas tys msg
 	 nest 4 (parens msg)
     ]
 
-instBndrErr bndr clas
-  = hsep [ptext SLIT("Class"), quotes (ppr clas), ptext SLIT("does not have a method"), quotes (ppr bndr)]
-
 derivingWhenInstanceExistsErr clas tycon
   = hang (hsep [ptext SLIT("Deriving class"), 
 		       quotes (ppr clas), 
@@ -781,19 +778,5 @@ invisibleDataConPrimCCallErr clas inst_ty
         4 (hsep [text "(Try either importing", ppr inst_ty, 
 	         text "non-abstractly or compile using -fno-prune-tydecls ..)"])
 
-instMethodNotInClassErr occ clas
-  = hang (ptext SLIT("Instance mentions a method not in the class"))
-	 4 (hsep [ptext SLIT("class")  <+> quotes (ppr clas), 
-		  ptext SLIT("method") <+> quotes (ppr occ)])
-
-patMonoBindsCtxt pbind
-  = hang (ptext SLIT("In a pattern binding:"))
-	 4 (ppr pbind)
-
-methodSigCtxt name ty
-  = hang (hsep [ptext SLIT("When matching the definition of class method"),
-	        quotes (ppr name), ptext SLIT("to its signature :") ])
-	 4 (ppr ty)
-
 superClassCtxt = ptext SLIT("From the superclasses of the instance declaration")
 \end{code}
diff --git a/ghc/compiler/typecheck/TcModule.lhs b/ghc/compiler/typecheck/TcModule.lhs
index 7a6cb156d6d9b9ce6cb6360293b4158df25b8be5..96819e40da0c36ecb636fbd40de55707b1bdc36c 100644
--- a/ghc/compiler/typecheck/TcModule.lhs
+++ b/ghc/compiler/typecheck/TcModule.lhs
@@ -14,21 +14,17 @@ module TcModule (
 
 import CmdLineOpts	( opt_D_dump_tc, opt_D_dump_deriv )
 import HsSyn		( HsModule(..), HsBinds(..), MonoBinds(..), HsDecl(..) )
-import RnHsSyn		( RenamedHsModule, RenamedFixityDecl(..) )
-import TcHsSyn		( TypecheckedHsBinds, TypecheckedHsExpr,
-			  TypecheckedDictBinds, TcMonoBinds,
-			  TypecheckedMonoBinds,
-			  zonkTopBinds )
+import RnHsSyn		( RenamedHsModule )
+import TcHsSyn		( TcMonoBinds, TypecheckedMonoBinds, zonkTopBinds )
 
 import TcMonad
 import Inst		( Inst, emptyLIE, plusLIE )
 import TcBinds		( tcTopBindsAndThen )
 import TcClassDcl	( tcClassDecls2 )
 import TcDefaults	( tcDefaults )
-import TcEnv		( TcIdOcc(..), tcExtendGlobalValEnv, tcExtendTyConEnv, getEnv_LocalIds,
+import TcEnv		( TcIdOcc(..), tcExtendGlobalValEnv, tcExtendTyConEnv,
 			  getEnv_TyCons, getEnv_Classes, tcLookupLocalValue,
-			  tcLookupLocalValueByKey, tcLookupTyCon,
-			  tcLookupGlobalValueByKeyMaybe, initEnv )
+			  tcLookupTyCon, initEnv )
 import TcExpr		( tcId )
 import TcIfaceSig	( tcInterfaceSigs )
 import TcInstDcls	( tcInstDecls1, tcInstDecls2 )
@@ -42,26 +38,23 @@ import TcKind		( TcKind, kindToTcKind )
 import RnMonad		( RnNameSupply(..) )
 import Bag		( isEmptyBag )
 import ErrUtils		( WarnMsg, ErrMsg, 
-			  pprBagOfErrors, dumpIfSet, ghcExit
+			  pprBagOfErrors, dumpIfSet
 			)
-import Id		( idType, GenId, IdEnv, nullIdEnv )
-import Maybes		( catMaybes, MaybeErr(..) )
+import Id		( idType, GenId )
 import Name		( Name, isLocallyDefined, pprModule, NamedThing(..) )
-import TyCon		( TyCon, isSynTyCon, tyConKind )
+import TyCon		( TyCon, tyConKind )
 import Class		( Class, classSelIds, classTyCon )
-import Type		( mkTyConApp, mkSynTy, Type )
+import Type		( mkTyConApp, Type )
 import TyVar		( emptyTyVarEnv )
 import TysWiredIn	( unitTy )
-import PrelMods		( pREL_MAIN, mAIN )
+import PrelMods		( mAIN )
 import PrelInfo		( main_NAME, ioTyCon_NAME )
 import Unify		( unifyTauTy )
-import UniqFM		( lookupUFM_Directly, lookupWithDefaultUFM_Directly,
-		          filterUFM, eltsUFM )
 import Unique		( Unique  )
 import UniqSupply       ( UniqSupply )
 import Util
 import Bag		( Bag, isEmptyBag )
-import FiniteMap	( emptyFM, FiniteMap )
+import FiniteMap	( FiniteMap )
 import Outputable
 \end{code}
 
diff --git a/ghc/compiler/typecheck/TcPat.lhs b/ghc/compiler/typecheck/TcPat.lhs
index 5ec7d7c0cc96aae22889ed5d5d64cd2600077dcb..8f7451cabebeaf29081b3e5ecda0ee7bf6ed9c64 100644
--- a/ghc/compiler/typecheck/TcPat.lhs
+++ b/ghc/compiler/typecheck/TcPat.lhs
@@ -28,17 +28,16 @@ import Bag		( Bag )
 import CmdLineOpts	( opt_IrrefutableTuples )
 import Id		( GenId, idType, Id )
 import Kind		( Kind, mkBoxedTypeKind, mkTypeKind )
-import Maybes		( maybeToBool )
 import PprType		( GenType, GenTyVar )
-import Type		( splitFunTys, splitRhoTy, splitSigmaTy, mkTyVarTys,
-			  splitFunTy_maybe, splitAlgTyConApp_maybe,
+import Type		( splitFunTys, splitRhoTy,
+			  splitFunTy_maybe,
 			  Type, GenType
 			)
 import TyVar		( GenTyVar )
 import TysPrim		( charPrimTy, intPrimTy, floatPrimTy,
 			  doublePrimTy, addrPrimTy
 			)
-import TysWiredIn	( charTy, stringTy, mkListTy, mkTupleTy, addrTy )
+import TysWiredIn	( charTy, stringTy, mkListTy, mkTupleTy )
 import Unique		( Unique, eqClassOpKey, geClassOpKey, minusClassOpKey )
 import Util		( assertPanic, panic )
 import Outputable