diff --git a/graceful.cabal b/graceful.cabal
--- a/graceful.cabal
+++ b/graceful.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                graceful
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:            Library to write graceful shutdown / upgrade service.
 description:         Library to write graceful shutdown / upgrade service.
 license:             BSD3
@@ -51,3 +51,4 @@
                      , unix
                      , stm
                      , directory
+                     , filepath
diff --git a/src/System/Posix/Graceful.hs b/src/System/Posix/Graceful.hs
--- a/src/System/Posix/Graceful.hs
+++ b/src/System/Posix/Graceful.hs
@@ -23,6 +23,7 @@
                               , send, recv, sendFd, recvFd, fdSocket, SocketStatus(..)
                               , Family(..), SocketType(..), SockAddr(..) )
 import System.Directory ( doesFileExist, removeFile, renameFile )
+import System.Environment ( getArgs )
 import System.Posix.IO ( dup )
 import System.Posix.Process ( getProcessID, forkProcess, executeFile, getProcessStatus )
 import System.Posix.Signals ( blockSignals, unblockSignals, fullSignalSet )
@@ -93,7 +94,8 @@
   bracket (socket AF_UNIX Stream 0) close $ \uds -> do
     bindSocket uds $ SockAddrUnix sockFile
     listen uds 1
-    pid <- forkProcess $ executeFile binary False [] Nothing
+    args <- getArgs
+    pid <- forkProcess $ executeFile binary False args Nothing
     bracket (accept uds) (close . fst) $ \(s, _) -> sendSock s sock
     void $ getProcessStatus True False pid
 
diff --git a/test/System/Posix/GracefulSpec.hs b/test/System/Posix/GracefulSpec.hs
--- a/test/System/Posix/GracefulSpec.hs
+++ b/test/System/Posix/GracefulSpec.hs
@@ -10,6 +10,8 @@
 import System.Cmd
 import System.Directory
 import System.Exit
+import System.FilePath
+import System.Posix.Files
 import System.Posix.Signals
 import System.Posix.Types
 import System.Process
@@ -106,7 +108,6 @@
       connect sock $ SockAddrInet 8080 addr
       action sock
 
-
 packageOption :: String
 #if __GLASGOW_HASKELL__ < 706
 packageOption = "-package-conf"
@@ -117,12 +118,18 @@
 buildAsEchoServer :: FilePath -> IO ()
 buildAsEchoServer file = do
   removeFileIfExist "/tmp/echo-server"
+  confDistDir <- getConfDistDir
   (code, _out, _err) <- readProcessWithExitCode "ghc"
                         [ "--make", file
                         , "-o", "/tmp/echo-server"
-                        , packageOption, "dist/package.conf.inplace"
+                        , packageOption, confDistDir ++ "/package.conf.inplace"
                         ] ""
   code `shouldBe` ExitSuccess
+
+getConfDistDir :: IO FilePath
+getConfDistDir = fmap (dirname . dirname . dirname) getModuleFile where
+    dirname = takeDirectory
+    getModuleFile = readSymbolicLink "/proc/self/exe"
 
 ps :: IO [ProcessID]
 ps = do
