diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -21,8 +21,8 @@
 The goals of Cake3 are to help the developer to:
 
   * Stop overusing Make by writing complex logic in make-language
-  * Still have a correct Makefile which could be distributed among the users
-  * Take a bit of Haskell practice :)
+  * Still have a correct Makefile which could be distributed among the end-users
+  * Practice some Haskell
 
 Installation
 ------------
@@ -85,11 +85,11 @@
     import Development.Cake3
     import Cakefile_P
 
-    main = writeMake "Makefile" $ do
+    main = writeMake (file "Makefile") $ do
 
       selfUpdate
 
-      cs <- filterDirectoryContentsRecursive [".c"]
+      cs <- return $ [file "main.c", file "second.c"]
 
       d <- rule $ do
         shell [cmd|gcc -M $cs -MF @(file "depend.mk")|]
@@ -126,9 +126,9 @@
     'all' rule to be defined at the bottom of Cakefile.hs.
   * Starting from 0.4, cake3 outputs rule named 'clean' automatically. This rule
     contains recipe which deletes all intermediate files with 'rm' command.
-  * selfUpdate call includes the self-updating dependencies. That means, that
+  * `selfUpdate` call includes the self-updating dependencies. That means, that
     Makefile will depend on Cakefile.hs and thus will require ghc to present in
-    the system. Removing selfUpdate call will make the Makefile fully
+    the system. Removing `selfUpdate` call will make the Makefile fully
     Haskell-independent.
 
 
@@ -150,6 +150,7 @@
 ### Features
 
   * *Cake3 generates the 'clean' rule automatically.*
+
     But if you define your own 'clean', cake3 will take it as is.
 
   * *Cake3 takes care of spaces inside the filenames.*
@@ -240,16 +241,15 @@
 
 #### Make syntax
 
-As a summary - only a samll subset of Make syntax is supported for generation.
-For complex algorithms Haskell looks more suitable so implement everything you
-need inside the Cakefile.hs. In particular:
+As a summary - only a samll subset of Make syntax is supported.  For complex
+algorithms Haskell looks more suitable so implement everything you need inside
+the Cakefile.hs. In particular:
 
-  * Cake3 offers no way of detecting directory content chages. For example, user
-    has to rerun the ./Cakegen if they add/remove a source file.
+  * Cake3 offers no way of detecting directory content chages at the moment. For
+    example, user has to rerun the ./Cakegen if they add/remove a source file.
   * Cake3 doesn't check the contents of Makefile variables. It is user's
     responsibility to keep them safe.
-  * Variables as targets is not supported. Implement this logic in Haskell for
-    now.
+  * DSL doesn't allow to place Make variables anywhere except the recipe.
 
 
 #### General
@@ -264,24 +264,20 @@
 Random implementation details
 -----------------------------
 
-  1. User writes a cakefile (./Cake\*.hs) describing the rules. Refer to
-     Example/GHC/Cakefile.hs. Note, that different cakefiles should have
-     different names even if they are in different directories due to GHC import
-     restrictions. This way user can import one cakefile from another, as if
-     they were in the same directory. Actually, cake3 copies all cakefiles into
-     one temporary directory and compiles them there. Note that cake3 calls ghc
-     having several common haskell extentions enabled.
+  1. cake3 script copies all the Cake\*hs files it found in the project tree to
+     a single temporary directory before compiling the ./Cakegen application.
+     That is why all the cakefiles in project should have different names.
+     Another consequence - cakefiles as Haskell modules may be imported by
+     filename regardles of their actual position in the project tree.
 
-  2. Cake3 copies all Cake\*.hs files from your project tree into temporary dir
-     and compiles them with GHC (or calls GHCi). Before that, it creates a
-     ./Cake\*_P.hs pathfile containing information about paths. The most
-     important is _files_ function which translates relative _filename_ into
-     _"." </> path_to_subproject </> filename_.
+  2. Cake3 creates ./Cake\*\_P.hs files for every Cake\*hs. The \_P files
+     contain paths information. In particular, they define `file` function for
+     the current directiory. `selfUpdate` function is also defined there.
 
-  3. Cake3 uses relative paths only for the final Makefile.
+  3. All filepaths in the final Makefile are relative.
 
   4. Cake3 uses it's own representation of files (File). Many filepath functions
      (takeDirectory, takeBaseName, dropExtensions, </>, etc) are defined for
-     them. See System.FilePath.Wrapper.hs. FileLike typeclass makes it possible
-     to use them with plain FilePath as well.
+     File as members of FileLike typeclass. See System.FilePath.Wrapper for the
+     details.
 
diff --git a/cake3.cabal b/cake3.cabal
--- a/cake3.cabal
+++ b/cake3.cabal
@@ -2,7 +2,7 @@
 -- see http://haskell.org/cabal/users-guide/
 
 name:                cake3
-version:             0.4.0.0
+version:             0.5.0.0
 synopsis:            Third cake the Makefile EDSL
 description:         Cake3 is a Makefile EDSL written in Haskell. Write your build logic in
                      Haskell, obtain clean and safe Makefile, distribute it to the end-users.
@@ -71,24 +71,24 @@
                      Development.Cake3.Utils.Find
                      Text.QuasiMake
 
-  build-depends:     base ==4.6.*, haskell-src-meta, template-haskell,
+  build-depends:     base ==4.7.*, haskell-src-meta, template-haskell,
                      filepath, containers, text, monadloc, mtl,
                      bytestring, deepseq, system-filepath, text-format,
                      directory, attoparsec, mime-types,
-                     language-javascript ==0.5.*, syb
+                     language-javascript, syb
 
   hs-source-dirs:    src
 
 executable cake3
   hs-source-dirs:    src
   main-is:           CakeScript.hs
-  build-depends:     base ==4.6.*, process
+  build-depends:     base ==4.7.*, process
   other-modules:     Paths_cake3
 
 executable urembed
   hs-source-dirs:    src
   main-is:           Development/Cake3/Ext/UrWeb/UrEmbed.hs
-  build-depends:     base == 4.6.*, mtl, language-javascript ==0.5.*, process,
+  build-depends:     base == 4.7.*, mtl, language-javascript, process,
                      filepath, syb, optparse-applicative, directory,
                      text, bytestring, containers, language-javascript,
                      haskell-src-meta, template-haskell, attoparsec, monadloc,
diff --git a/src/CakeScript.hs b/src/CakeScript.hs
--- a/src/CakeScript.hs
+++ b/src/CakeScript.hs
@@ -16,6 +16,7 @@
     , std_out = Inherit
     , std_err = Inherit
     , close_fds = True
+    , delegate_ctlc = False
     , create_group = False
     }
   ret <- waitForProcess ph
