diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-04-03 v0.7.2.2
+	* Fix renaming so that it also renames types in the export list of
+	a module
+	* revert to ghc-mod >= 4.0, with note that FFI exports can't
+	currently be processed
 2014-04-01 v0.7.2.1
 	* limit ghc-mod to <= 3.1.7, new version 4.0 does not deal with
 	FFI exports. This does not stop ghc-mod >= 4.0 being used in the
diff --git a/HaRe.cabal b/HaRe.cabal
--- a/HaRe.cabal
+++ b/HaRe.cabal
@@ -1,5 +1,5 @@
 Name:                           HaRe
-Version:                        0.7.2.1
+Version:                        0.7.2.2
 Author:                         Chris Brown, Huiqing Li, Simon Thompson, Alan Zimmerman
 Maintainer:                     Alan Zimmerman
 Stability:                      Alpha
@@ -29,6 +29,8 @@
    The renaming refactoring seems reasonably reliable, as does lifting
    and demoting
    .
+   At the moment parsing of any file with FFI exports will fail.
+   .
 
 Synopsis:                       the Haskell Refactorer.
 Category:                       Development, Refactoring
@@ -52,8 +54,8 @@
                                 , ghc-paths
                                 , ghc-prim
                                 , ghc-syb-utils
-                                -- , ghc-mod >= 4.0
-                                , ghc-mod >= 3.1.6 && <= 3.1.7
+                                , ghc-mod >= 4.0
+                                -- , ghc-mod >= 3.1.6 && <= 3.1.7
                                 -- , lens
                                 , mtl
                                 , old-time
@@ -119,8 +121,8 @@
                                 , ghc-paths
                                 , ghc-prim
                                 , ghc-syb-utils
-                                -- , ghc-mod >= 4.0
-                                , ghc-mod >= 3.1.6 && <= 3.1.7
+                                , ghc-mod >= 4.0
+                                -- , ghc-mod >= 3.1.6 && <= 3.1.7
                                 -- , lens
                                 , mtl
                                 , old-time
@@ -171,8 +173,8 @@
     , ghc-paths   == 0.1.*
     , ghc-prim
     , ghc-syb-utils
-    -- , ghc-mod >= 4.0
-    , ghc-mod >= 3.1.6 && <= 3.1.7
+    , ghc-mod >= 4.0
+    -- , ghc-mod >= 3.1.6 && <= 3.1.7
     , hspec
     , mtl
     , old-time
diff --git a/src/Language/Haskell/Refact/Refactoring/Renaming.hs b/src/Language/Haskell/Refact/Refactoring/Renaming.hs
--- a/src/Language/Haskell/Refact/Refactoring/Renaming.hs
+++ b/src/Language/Haskell/Refact/Refactoring/Renaming.hs
@@ -59,7 +59,7 @@
     getModuleGhc fileName
     renamed <- getRefactRenamed
     parsed  <- getRefactParsed
-    -- logm $ "comp:renamed=" ++ (SYB.showData SYB.Renamer 0 renamed) -- ++AZ++
+    logm $ "comp:renamed=" ++ (SYB.showData SYB.Renamer 0 renamed) -- ++AZ++
     -- logm $ "comp:parsed=" ++ (SYB.showData SYB.Parser 0 parsed) -- ++AZ++
 
     modu <- getModule
diff --git a/src/Language/Haskell/Refact/Utils/LocUtils.hs b/src/Language/Haskell/Refact/Utils/LocUtils.hs
--- a/src/Language/Haskell/Refact/Utils/LocUtils.hs
+++ b/src/Language/Haskell/Refact/Utils/LocUtils.hs
@@ -28,7 +28,7 @@
                      isNestedComment-},isMultiLineComment {-,isOpenBracket,isCloseBracket, -}
                      ,isOpenSquareBracket,isCloseSquareBracket {- ,isOpenBrace,isConid,
                      isLit,isWhereOrLet,isWhere,isLet-},isIn {- ,isCase,isDo,isIf,isForall,
-                     isHiding,isModule-} ,isComma {-,isEqual,isLambda,isIrrefute -},isBar --,isMinus,
+                     isHiding,isModule-} ,isComma, isOpenParen {-,isEqual,isLambda,isIrrefute -},isBar --,isMinus,
                      ,endsWithNewLn,startsWithNewLn,hasNewLn {- ,startsWithEmptyLn,
                      lastNonSpaceToken,firstNonSpaceToken -} ,compressPreNewLns,compressEndNewLns
 
@@ -221,6 +221,12 @@
 isComma ((GHC.L _ t),_s) = case t of
                          GHC.ITcomma -> True
                          _           -> False
+
+isOpenParen :: PosToken -> Bool
+isOpenParen ((GHC.L _ t),_s) = case t of
+                         GHC.IToparen -> True
+                         _            -> False
+
 {-
 isEqual  (t,(_,s))   = t==Reservedop && s=="="
 isLambda (t,(_,s))   = t==Reservedop && s=="\\"
diff --git a/src/Language/Haskell/Refact/Utils/Monad.hs b/src/Language/Haskell/Refact/Utils/Monad.hs
--- a/src/Language/Haskell/Refact/Utils/Monad.hs
+++ b/src/Language/Haskell/Refact/Utils/Monad.hs
@@ -235,8 +235,8 @@
 -- getCabalAllTargets :: Cradle -> PackageDescription -> IO ([FilePath],[FilePath],[FilePath],[FilePath])
 getCabalAllTargets cradle cabal = do
    currentDir <- getCurrentDirectory
-   let cabalDir = gfromJust "getCabalAllTargets" (cradleCabalDir cradle)
-   -- let cabalDir = cradleRootDir cradle
+   -- let cabalDir = gfromJust "getCabalAllTargets" (cradleCabalDir cradle)
+   let cabalDir = cradleRootDir cradle
 
    setCurrentDirectory cabalDir
 
@@ -296,7 +296,7 @@
 loadTarget :: [FilePath] -> RefactGhc ()
 loadTarget targetFiles = do
       setTargetFiles targetFiles
-      checkSlowAndSet
+      -- checkSlowAndSet
       void $ GHC.load GHC.LoadAllTargets
 
 -- ---------------------------------------------------------------------
diff --git a/src/Language/Haskell/Refact/Utils/TypeUtils.hs b/src/Language/Haskell/Refact/Utils/TypeUtils.hs
--- a/src/Language/Haskell/Refact/Utils/TypeUtils.hs
+++ b/src/Language/Haskell/Refact/Utils/TypeUtils.hs
@@ -4169,14 +4169,60 @@
 #endif
     renameHsTyVarBndr x = return x
 
+    -- ---------------------------------
+
     renameLIE :: (GHC.LIE GHC.Name) -> RefactGhc (GHC.LIE GHC.Name)
     renameLIE (GHC.L l (GHC.IEVar n))
      | (GHC.nameUnique n == GHC.nameUnique oldPN)
      = do
-          logm $ "renamePNworker:renameLIE at :" ++ (showGhc l)
+          -- logm $ "renamePNworker:renameLIE.IEVar at :" ++ (showGhc l)
           worker useQual l Nothing
           return (GHC.L l (GHC.IEVar newName))
-    renameLIE x = return x
+
+    renameLIE (GHC.L l (GHC.IEThingAbs n))
+     | (GHC.nameUnique n == GHC.nameUnique oldPN)
+     = do
+          -- logm $ "renamePNworker:renameLIE.IEThingAbs at :" ++ (showGhc l)
+          worker useQual l Nothing
+          return (GHC.L l (GHC.IEThingAbs newName))
+
+    renameLIE (GHC.L l (GHC.IEThingAll n))
+     | (GHC.nameUnique n == GHC.nameUnique oldPN)
+     = do
+          -- logm $ "renamePNworker:renameLIE.IEThingAll at :" ++ (showGhc l)
+          worker useQual l Nothing
+          return (GHC.L l (GHC.IEThingAll newName))
+
+    -- TODO: check inside the ns here too
+    renameLIE (GHC.L l (GHC.IEThingWith n ns))
+     | (GHC.nameUnique n == GHC.nameUnique oldPN)
+     = do
+          logm $ "renamePNworker:renameLIE.IEThingWith at :" ++ (showGhc l)
+          worker useQual l Nothing
+          return (GHC.L l (GHC.IEThingWith newName ns))
+     | any (\nn -> (GHC.nameUnique nn == GHC.nameUnique oldPN)) ns
+     = do
+          -- We have to find the right token, no locations to help
+          toks <- getToksForSpan l
+          -- find the opening parenthesis
+          let (_,pt) = break isOpenParen $ filter (not . isWhiteSpaceOrIgnored) toks
+          -- logm $ "renamePNworker:renameLIE.IEThingWith ns pt=" ++ (show pt)
+          let nstoks = gtail "renamePNworker" pt
+          let unQualOld = (GHC.occNameString $ GHC.getOccName oldPN)
+          -- logm $ "renamePNworker:renameLIE.IEThingWith unquaOld=" ++ (show unQualOld)
+          let _tok@(GHC.L lt _,_) = ghead "renamePNworker" $ filter (\tt -> tokenCon tt == showGhc oldPN || tokenCon tt == unQualOld) nstoks
+          -- logm $ "renamePNworker:renameLIE.IEThingWith ns tok=" ++ (show _tok)
+          logm $ "renamePNworker:renameLIE.IEThingWith ns at :" ++ (showGhc lt)
+          worker useQual lt Nothing
+          -- TODO: update ns
+          return (GHC.L l (GHC.IEThingWith newName ns))
+
+    renameLIE x = do
+         -- logm $ "renamePNworker:renameLIE miss for :" ++ (showGhc x)
+         return x
+
+    -- ---------------------------------
+
 
     renameLPat :: (GHC.LPat GHC.Name) -> RefactGhc (GHC.LPat GHC.Name)
     renameLPat v@(GHC.L l (GHC.VarPat n))
