diff --git a/Language/Haskell/Tools/Refactor/Daemon.hs b/Language/Haskell/Tools/Refactor/Daemon.hs
--- a/Language/Haskell/Tools/Refactor/Daemon.hs
+++ b/Language/Haskell/Tools/Refactor/Daemon.hs
@@ -126,15 +126,18 @@
     modify $ refSessMCs .- filter (not . isTheAdded) -- remove the added package from the database
     forM_ existing $ \mn -> removeTarget (TargetModule (GHC.moduleName mn))
     modifySession (\s -> s { hsc_mod_graph = filter (not . (`elem` existing) . ms_mod) (hsc_mod_graph s) })
-    (modules, ignoredMods) <- loadPackagesFrom (return . getModSumOrig) packagePathes
-    mapM_ (reloadModule (\_ -> return ())) needToReload -- don't report consequent reloads (not expected)
-    liftIO $ resp 
-      $ if not (null ignoredMods) 
-          then ErrorMessage 
-                 $ "The following modules are ignored: " 
-                     ++ concat (intersperse ", " ignoredMods)
-                     ++ ". Multiple modules with the same qualified name are not supported."
-          else LoadedModules modules
+    res <- loadPackagesFrom (return . getModSumOrig) packagePathes
+    case res of 
+      Right (modules, ignoredMods) -> do
+        mapM_ (reloadModule (\_ -> return ())) needToReload -- don't report consequent reloads (not expected)
+        liftIO $ resp 
+          $ if not (null ignoredMods) 
+              then ErrorMessage 
+                     $ "The following modules are ignored: " 
+                         ++ concat (intersperse ", " ignoredMods)
+                         ++ ". Multiple modules with the same qualified name are not supported."
+              else LoadedModules modules
+      Left err -> liftIO $ resp $ CompilationProblem err 
     return True
   where isTheAdded mc = (mc ^. mcRoot) `elem` packagePathes
 
diff --git a/examples/Project/changing-cabal/A.hs b/examples/Project/changing-cabal/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/changing-cabal/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = ()
diff --git a/examples/Project/changing-cabal/B.hs b/examples/Project/changing-cabal/B.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/changing-cabal/B.hs
@@ -0,0 +1,5 @@
+module B where
+
+import A
+
+y = x
diff --git a/examples/Project/changing-cabal/some-test-package.cabal b/examples/Project/changing-cabal/some-test-package.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/changing-cabal/some-test-package.cabal
@@ -0,0 +1,18 @@
+name:                some-test-package
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  build-depends:       base
+  default-language:    Haskell2010
+  exposed-modules:     A
diff --git a/examples/Project/has-cabal/A.hs b/examples/Project/has-cabal/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/has-cabal/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = ()
diff --git a/examples/Project/has-cabal/some-test-package.cabal b/examples/Project/has-cabal/some-test-package.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/has-cabal/some-test-package.cabal
@@ -0,0 +1,18 @@
+name:                some-test-package
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/has-th/A.hs b/examples/Project/has-th/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/has-th/A.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE TemplateHaskell #-}
+module A where
+
+import TH
+
+x
diff --git a/examples/Project/has-th/TH.hs b/examples/Project/has-th/TH.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/has-th/TH.hs
@@ -0,0 +1,6 @@
+module TH where
+
+import Language.Haskell.TH
+
+x :: Q [Dec]
+x = return []
diff --git a/examples/Project/hs-boots/A.hs b/examples/Project/hs-boots/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/hs-boots/A.hs
@@ -0,0 +1,5 @@
+module A where
+
+import {-# SOURCE #-} B
+
+a = b
diff --git a/examples/Project/hs-boots/A.hs-boot b/examples/Project/hs-boots/A.hs-boot
new file mode 100644
--- /dev/null
+++ b/examples/Project/hs-boots/A.hs-boot
@@ -0,0 +1,3 @@
+module A where
+
+a :: ()
diff --git a/examples/Project/hs-boots/B.hs b/examples/Project/hs-boots/B.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/hs-boots/B.hs
@@ -0,0 +1,5 @@
+module B where
+
+import {-# SOURCE #-} A
+
+b = a
diff --git a/examples/Project/hs-boots/B.hs-boot b/examples/Project/hs-boots/B.hs-boot
new file mode 100644
--- /dev/null
+++ b/examples/Project/hs-boots/B.hs-boot
@@ -0,0 +1,3 @@
+module B where
+
+b :: ()
diff --git a/examples/Project/multi-packages-dependent/package1/A.hs b/examples/Project/multi-packages-dependent/package1/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-dependent/package1/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = ()
diff --git a/examples/Project/multi-packages-dependent/package1/package1.cabal b/examples/Project/multi-packages-dependent/package1/package1.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-dependent/package1/package1.cabal
@@ -0,0 +1,18 @@
+name:                package1
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/multi-packages-dependent/package2/B.hs b/examples/Project/multi-packages-dependent/package2/B.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-dependent/package2/B.hs
@@ -0,0 +1,5 @@
+module B where
+
+import A
+
+y = x
diff --git a/examples/Project/multi-packages-dependent/package2/package2.cabal b/examples/Project/multi-packages-dependent/package2/package2.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-dependent/package2/package2.cabal
@@ -0,0 +1,18 @@
+name:                package2
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     B
+  build-depends:       base, package1
+  default-language:    Haskell2010
diff --git a/examples/Project/multi-packages-flags/package1/A.hs b/examples/Project/multi-packages-flags/package1/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-flags/package1/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = \case () -> ()
diff --git a/examples/Project/multi-packages-flags/package1/package1.cabal b/examples/Project/multi-packages-flags/package1/package1.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-flags/package1/package1.cabal
@@ -0,0 +1,19 @@
+name:                package1
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  build-depends:       base
+  default-language:    Haskell2010
+  default-extensions:  LambdaCase
diff --git a/examples/Project/multi-packages-flags/package2/B.hs b/examples/Project/multi-packages-flags/package2/B.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-flags/package2/B.hs
@@ -0,0 +1,3 @@
+module B where
+
+x = (,())
diff --git a/examples/Project/multi-packages-flags/package2/package2.cabal b/examples/Project/multi-packages-flags/package2/package2.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-flags/package2/package2.cabal
@@ -0,0 +1,19 @@
+name:                package2
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     B
+  build-depends:       base
+  default-language:    Haskell2010
+  default-extensions:  TupleSections
diff --git a/examples/Project/multi-packages-same-module/package1/A.hs b/examples/Project/multi-packages-same-module/package1/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-same-module/package1/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = ()
diff --git a/examples/Project/multi-packages-same-module/package1/package1.cabal b/examples/Project/multi-packages-same-module/package1/package1.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-same-module/package1/package1.cabal
@@ -0,0 +1,18 @@
+name:                package1
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/multi-packages-same-module/package2/A.hs b/examples/Project/multi-packages-same-module/package2/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-same-module/package2/A.hs
@@ -0,0 +1,1 @@
+module A where
diff --git a/examples/Project/multi-packages-same-module/package2/package2.cabal b/examples/Project/multi-packages-same-module/package2/package2.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages-same-module/package2/package2.cabal
@@ -0,0 +1,18 @@
+name:                package2
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/multi-packages/package1/A.hs b/examples/Project/multi-packages/package1/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages/package1/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = ()
diff --git a/examples/Project/multi-packages/package1/package1.cabal b/examples/Project/multi-packages/package1/package1.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages/package1/package1.cabal
@@ -0,0 +1,18 @@
+name:                package1
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/multi-packages/package2/B.hs b/examples/Project/multi-packages/package2/B.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages/package2/B.hs
@@ -0,0 +1,3 @@
+module B where
+
+x = ()
diff --git a/examples/Project/multi-packages/package2/package2.cabal b/examples/Project/multi-packages/package2/package2.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/multi-packages/package2/package2.cabal
@@ -0,0 +1,18 @@
+name:                package2
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     B
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/no-cabal/A.hs b/examples/Project/no-cabal/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/no-cabal/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = ()
diff --git a/examples/Project/reloading/A.hs b/examples/Project/reloading/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/reloading/A.hs
@@ -0,0 +1,5 @@
+module A where
+
+import B
+
+a = b
diff --git a/examples/Project/reloading/B.hs b/examples/Project/reloading/B.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/reloading/B.hs
@@ -0,0 +1,5 @@
+module B where
+
+import C
+
+b = c
diff --git a/examples/Project/reloading/C.hs b/examples/Project/reloading/C.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/reloading/C.hs
@@ -0,0 +1,3 @@
+module C where
+
+c = ()
diff --git a/examples/Project/selection/B.hs b/examples/Project/selection/B.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/selection/B.hs
@@ -0,0 +1,5 @@
+module B where
+
+import C
+
+b = c
diff --git a/examples/Project/selection/C.hs b/examples/Project/selection/C.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/selection/C.hs
@@ -0,0 +1,3 @@
+module C where
+
+c = ()
diff --git a/examples/Project/simple-refactor/A.hs b/examples/Project/simple-refactor/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/simple-refactor/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = ()
diff --git a/examples/Project/simple-refactor/some-test-package.cabal b/examples/Project/simple-refactor/some-test-package.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/simple-refactor/some-test-package.cabal
@@ -0,0 +1,18 @@
+name:                some-test-package
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/source-dir-outside/some-test-package.cabal b/examples/Project/source-dir-outside/some-test-package.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/source-dir-outside/some-test-package.cabal
@@ -0,0 +1,19 @@
+name:                some-test-package
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  hs-source-dirs:      ../src            
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/source-dir/some-test-package.cabal b/examples/Project/source-dir/some-test-package.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/source-dir/some-test-package.cabal
@@ -0,0 +1,19 @@
+name:                some-test-package
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  hs-source-dirs:      src            
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/source-dir/src/A.hs b/examples/Project/source-dir/src/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/source-dir/src/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = ()
diff --git a/examples/Project/src/A.hs b/examples/Project/src/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/src/A.hs
@@ -0,0 +1,3 @@
+module A where
+
+x = ()
diff --git a/examples/Project/th-added-later/package1/A.hs b/examples/Project/th-added-later/package1/A.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/th-added-later/package1/A.hs
@@ -0,0 +1,6 @@
+module A where
+
+import Language.Haskell.TH
+
+x :: Q [Dec]
+x = return []
diff --git a/examples/Project/th-added-later/package1/package1.cabal b/examples/Project/th-added-later/package1/package1.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/th-added-later/package1/package1.cabal
@@ -0,0 +1,18 @@
+name:                package1
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     A
+  build-depends:       base
+  default-language:    Haskell2010
diff --git a/examples/Project/th-added-later/package2/B.hs b/examples/Project/th-added-later/package2/B.hs
new file mode 100644
--- /dev/null
+++ b/examples/Project/th-added-later/package2/B.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE TemplateHaskell #-}
+module B where
+
+import A
+
+x
diff --git a/examples/Project/th-added-later/package2/package2.cabal b/examples/Project/th-added-later/package2/package2.cabal
new file mode 100644
--- /dev/null
+++ b/examples/Project/th-added-later/package2/package2.cabal
@@ -0,0 +1,18 @@
+name:                package2
+version:             1.2.3.4
+synopsis:            A package just for testing Haskell-tools support. Don't install it.
+description:         
+
+homepage:            https://github.com/nboldi/haskell-tools
+license:             BSD3
+license-file:        LICENSE
+author:              Boldizsar Nemeth
+maintainer:          nboldi@elte.hu
+category:            Language
+build-type:          Simple
+cabal-version:       >=1.10
+
+library
+  exposed-modules:     B
+  build-depends:       base, package1
+  default-language:    Haskell2010
diff --git a/haskell-tools-daemon.cabal b/haskell-tools-daemon.cabal
--- a/haskell-tools-daemon.cabal
+++ b/haskell-tools-daemon.cabal
@@ -1,5 +1,5 @@
 name:                haskell-tools-daemon
-version:             0.4.1.0
+version:             0.4.1.1
 synopsis:            Background process for Haskell-tools refactor that editors can connect to.
 description:         Background process for Haskell-tools refactor that editors can connect to.
 homepage:            https://github.com/haskell-tools/haskell-tools
@@ -11,6 +11,43 @@
 build-type:          Simple
 cabal-version:       >=1.10
 
+extra-source-files: examples/Project/has-cabal/*.hs
+                  , examples/Project/has-cabal/*.cabal
+                  , examples/Project/changing-cabal/*.hs
+                  , examples/Project/changing-cabal/*.cabal
+                  , examples/Project/has-th/*.hs
+                  , examples/Project/hs-boots/*.hs
+                  , examples/Project/hs-boots/*.hs-boot
+                  , examples/Project/multi-packages/package1/*.hs
+                  , examples/Project/multi-packages/package1/*.cabal
+                  , examples/Project/multi-packages/package2/*.hs
+                  , examples/Project/multi-packages/package2/*.cabal
+                  , examples/Project/multi-packages-dependent/package1/*.hs
+                  , examples/Project/multi-packages-dependent/package1/*.cabal
+                  , examples/Project/multi-packages-dependent/package2/*.hs
+                  , examples/Project/multi-packages-dependent/package2/*.cabal
+                  , examples/Project/multi-packages-flags/package1/*.hs
+                  , examples/Project/multi-packages-flags/package1/*.cabal
+                  , examples/Project/multi-packages-flags/package2/*.hs
+                  , examples/Project/multi-packages-flags/package2/*.cabal
+                  , examples/Project/multi-packages-same-module/package1/*.hs
+                  , examples/Project/multi-packages-same-module/package1/*.cabal
+                  , examples/Project/multi-packages-same-module/package2/*.hs
+                  , examples/Project/multi-packages-same-module/package2/*.cabal
+                  , examples/Project/no-cabal/*.hs
+                  , examples/Project/reloading/*.hs
+                  , examples/Project/selection/*.hs
+                  , examples/Project/simple-refactor/*.hs
+                  , examples/Project/simple-refactor/*.cabal
+                  , examples/Project/source-dir/*.cabal
+                  , examples/Project/source-dir/src/*.hs
+                  , examples/Project/source-dir-outside/*.cabal
+                  , examples/Project/src/*.hs
+                  , examples/Project/th-added-later/package1/*.hs
+                  , examples/Project/th-added-later/package1/*.cabal
+                  , examples/Project/th-added-later/package2/*.hs
+                  , examples/Project/th-added-later/package2/*.cabal
+
 library
   ghc-options:         -O2
   build-depends:       base                      >= 4.9   && < 5.0
@@ -43,7 +80,7 @@
 
 test-suite haskell-tools-daemon-tests
   type:                exitcode-stdio-1.0
-  ghc-options:         -with-rtsopts=-M2g -O2
+  ghc-options:         -with-rtsopts=-M2.5g -O2
   hs-source-dirs:      test
   main-is:             Main.hs  
   build-depends:       base                      >= 4.9  && < 4.10
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -6,6 +6,7 @@
 import System.Exit
 import System.Directory
 import System.FilePath
+import System.Environment
 import Control.Monad
 import Control.Exception
 import Control.Concurrent
@@ -28,12 +29,13 @@
           -- with separate processes it is not a problem
           forkIO $ runDaemon ["4123", "True"]
           tr <- canonicalizePath testRoot
-          defaultMain (allTests tr)
+          isStackRun <- isJust <$> lookupEnv "STACK_ROOT"
+          defaultMain (allTests isStackRun tr)
           stopDaemon
 
-allTests :: FilePath -> TestTree
-allTests testRoot
-  = localOption (mkTimeout ({- 10s -} 1000 * 1000 * 10)) 
+allTests :: Bool -> FilePath -> TestTree
+allTests isSource testRoot
+  = localOption (mkTimeout ({- 20s -} 1000 * 1000 * 20)) 
       $ testGroup "daemon-tests" 
           [ testGroup "simple-tests" 
               $ map (makeDaemonTest . (\(label, input, output) -> (Nothing, label, input, output))) simpleTests
@@ -43,7 +45,8 @@
               $ map (makeDaemonTest . (\(label, dir, input, output) -> (Just (testRoot </> dir), label, input, output))) (refactorTests testRoot)
           , testGroup "reload-tests" 
               $ map makeReloadTest reloadingTests
-          , selfLoadingTest
+          -- cannot execute this when the source is not present
+          , if isSource then selfLoadingTest else testCase "IGNORED self-load" (return ())
           ]
 
 testSuffix = "_test"
@@ -97,9 +100,9 @@
 sourceRoot = ".." </> ".." </> "src"
 
 selfLoadingTest :: TestTree
-selfLoadingTest = localOption (mkTimeout ({- 2 min -} 1000 * 1000 * 60 * 2)) $ testCase "self-load" $ do  
+selfLoadingTest = localOption (mkTimeout ({- 5 min -} 1000 * 1000 * 60 * 5)) $ testCase "self-load" $ do  
     actual <- communicateWithDaemon 
-                [ Right $ AddPackages (map (sourceRoot </>) ["ast" {-, "backend-ghc", "prettyprint", "rewrite", "refactor", "cli", "daemon" -} ] ) ]
+                [ Right $ AddPackages (map (sourceRoot </>) ["ast", "backend-ghc", "prettyprint", "rewrite", "refactor", "daemon"] ) ]
     assertBool ("The expected result is a nonempty response message list that does not contain errors. Actual result: " ++ show actual) 
                (not (null actual) && all (\case ErrorMessage {} -> False; _ -> True) actual)
 
@@ -265,7 +268,7 @@
   sendAll sock $ encode Stop
   close sock
 
-testRoot = ".." </> ".." </> "examples" </> "Project"
+testRoot = "examples" </> "Project"
 
 deriving instance Eq ResponseMsg
 instance FromJSON ResponseMsg
