diff --git a/HaRe.cabal b/HaRe.cabal
--- a/HaRe.cabal
+++ b/HaRe.cabal
@@ -1,5 +1,5 @@
 Name:                           HaRe
-Version:                        0.7.1.0
+Version:                        0.7.1.1
 Author:                         Chris Brown, Huiqing Li, Simon Thompson, Alan Zimmerman
 Maintainer:                     Alan Zimmerman
 Stability:                      Alpha
diff --git a/src/Language/Haskell/Refact/Utils.hs b/src/Language/Haskell/Refact/Utils.hs
--- a/src/Language/Haskell/Refact/Utils.hs
+++ b/src/Language/Haskell/Refact/Utils.hs
@@ -497,8 +497,16 @@
                            $ map summaryNodeSummary $ GHC.reachableG rg modNode
 
   let clients = concatMap (\(f,mg) -> zip (repeat f) (getClients mg)) ms'
-  -- return (concatMap getClients ms')
-  return clients
+  -- Need to strip out duplicates, based on the snd of the tuple
+      clients' = nubBy cc clients
+      cc (_,mg1) (_,mg2)
+        = if (show $ GHC.ms_mod mg1) == "Main" || (show $ GHC.ms_mod mg2) == "Main" 
+            then False
+            else mycomp mg1 mg2
+
+  logm $ "clientModsAndFiles:clients=" ++ show clients
+  logm $ "clientModsAndFiles:clients'=" ++ show clients'
+  return clients'
 
 -- TODO : find decent name and place for this.
 mycomp :: GHC.ModSummary -> GHC.ModSummary -> Bool
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
@@ -234,17 +234,18 @@
 -- getCabalAllTargets :: Cradle -> PackageDescription -> IO ([FilePath],[FilePath],[FilePath],[FilePath])
 getCabalAllTargets cradle cabal = do
    currentDir <- getCurrentDirectory
-   setCurrentDirectory $ gfromJust "getCabalAllTargets" (cradleCabalDir cradle)
+   let cabalDir = gfromJust "getCabalAllTargets" (cradleCabalDir cradle)
+   setCurrentDirectory cabalDir
 
    (libs,exes,tests,benches) <- liftIO $ cabalAllTargets cabal
    setCurrentDirectory currentDir
 
    let -- libs'    = addCurrentDir libs
-       exes'    = addCurrentDir exes
-       tests'   = addCurrentDir tests
-       benches' = addCurrentDir benches
+       exes'    = addCabalDir exes
+       tests'   = addCabalDir tests
+       benches' = addCabalDir benches
 
-       addCurrentDir ts = map (\t -> combine currentDir t) ts
+       addCabalDir ts = map (\t -> combine cabalDir t) ts
 
    return (libs,exes',tests',benches')
 
diff --git a/src/MainHaRe.hs b/src/MainHaRe.hs
--- a/src/MainHaRe.hs
+++ b/src/MainHaRe.hs
@@ -127,22 +127,22 @@
     res <- case cmdArg0 of
 
       -- demote wants FilePath -> SimpPos
-      "demote" -> runFunc $ demote opt cradle cmdArg1 (parseSimpPos cmdArg2 cmdArg3)
+      "demote" -> runFunc cradle $ demote opt cradle cmdArg1 (parseSimpPos cmdArg2 cmdArg3)
 
       -- dupdef wants FilePath -> String -> SimpPos
-      "dupdef" -> runFunc $ duplicateDef opt cradle cmdArg1 cmdArg2 (parseSimpPos cmdArg3 cmdArg4)
+      "dupdef" -> runFunc cradle $ duplicateDef opt cradle cmdArg1 cmdArg2 (parseSimpPos cmdArg3 cmdArg4)
 
       -- iftocase wants FilePath -> SimpPos -> SimpPos
-      "iftocase" -> runFunc $ ifToCase opt cradle cmdArg1 (parseSimpPos cmdArg2 cmdArg3) (parseSimpPos cmdArg4 cmdArg5)
+      "iftocase" -> runFunc cradle $ ifToCase opt cradle cmdArg1 (parseSimpPos cmdArg2 cmdArg3) (parseSimpPos cmdArg4 cmdArg5)
 
       -- liftOneLevel wants FilePath -> SimpPos
-      "liftOneLevel" -> runFunc $ liftOneLevel opt cradle cmdArg1 (parseSimpPos cmdArg2 cmdArg3)
+      "liftOneLevel" -> runFunc cradle $ liftOneLevel opt cradle cmdArg1 (parseSimpPos cmdArg2 cmdArg3)
 
       -- liftToTopLevel wants FilePath -> SimpPos
-      "liftToTopLevel" -> runFunc $ liftToTopLevel opt cradle cmdArg1 (parseSimpPos cmdArg2 cmdArg3)
+      "liftToTopLevel" -> runFunc cradle $ liftToTopLevel opt cradle cmdArg1 (parseSimpPos cmdArg2 cmdArg3)
 
       -- rename wants FilePath -> String -> SimpPos
-      "rename" -> runFunc $ rename opt cradle cmdArg1 cmdArg2 (parseSimpPos cmdArg3 cmdArg4)
+      "rename" -> runFunc cradle $ rename opt cradle cmdArg1 cmdArg2 (parseSimpPos cmdArg3 cmdArg4)
 
       "show" -> putStrLn  (show (opt,cradle))
 
@@ -183,11 +183,11 @@
 
 ----------------------------------------------------------------
 
-runFunc :: IO [String] -> IO ()
-runFunc f = do
+runFunc :: Cradle -> IO [String] -> IO ()
+runFunc cradle f = do
   r <- catchException f
   let ret = case r of
-       Left s    -> "(error " ++ (show s) ++ ")"
+       Left s    -> "(error " ++ (show s) ++ "[" ++ (show $ cradleCabalFile cradle) ++ "])"
        Right mfs -> "(ok " ++ showLisp mfs ++ ")"
   putStrLn ret
 
