diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,219 @@
+# Azubi
+
+[![Build Status](https://travis-ci.org/mrVanDalo/azubi.svg?branch=master)](https://travis-ci.org/mrVanDalo/azubi)
+
+Is a very simple DevOps tool, which will never "reach" enterprise level.
+
+## Goals
+
+* Readable -> Haskell
+* Check your rule set before changing your system -> Strong Type-system of Haskell
+* Adaptive, -> can run on all kinds of Linux and it is also planed to run on osx and Windows
+* Lightweight -> No installation (except some basic shell tools) needed on the target host.
+
+## Features
+
+### Different types of Execution
+
+You can 
+
+* enforce everything by command line (not yet)
+* create a bash script which you can run for system setup
+* use ssh to setup a target host (not yet)
+* create different configurations for different situations (not yet)
+* export to a Dockerfile (not yet)
+* export to a Bat file (not yet)
+
+### How to start
+
+Install `azubi` via cabal.
+
+    cabal install azubi
+
+create a file (e.g. `config.hs`) somewhere you like with the content
+
+    #!/usr/bin/env runghc
+    
+    import Azubi
+    
+    main :: IO ()
+    main = azubiMain $ azubiConfig Gentoo $ []
+        & installed "vim"
+
+
+call the script to get a help
+
+    ./config.hs --help
+
+
+call the script to get a bashscript
+
+    ./config.hs --output "my-first-azubi-script.sh"
+
+
+# Syntax
+
+## Commands
+
+Every Command should be revertable.
+
+### installed
+
+#### Package 
+
+install vim if not already done:
+
+    & installed "vim"
+
+uninstall vim if vim is installed:
+
+    ! installed "vim"
+
+### exists
+
+#### Files
+
+create files, directories and symlinks : 
+
+    & exists (File "~/.vimrc")
+    & exists (Directory "~/.vim")
+    & exists (Symlink ".bashrc" "~/.bashrc.d/bashrc")
+    
+delete files files, directories and symlinks : 
+
+    & exists (File "~/.vimrc")
+    & exists (Directory "~/.vim")
+    & exists (Symlink ".bashrc" "~/.bashrc.d/bashrc")
+
+#### Git projects
+
+pull git repository if not pressent:
+
+    & exists (Git "git@github.com:mrVanDalo/azubi.git" "~/develop/azubi" [Branch "develop"])
+
+you can give it options
+
+* *Branch "branchname"*
+* *Recursive*
+* more to follow ... 
+
+
+## Logic Components
+
+
+### Combiner
+
+#### &, !
+
+Almost every command should be revertable. So you have 2 states
+
+* do it -> `&`
+* undo it -> `!`
+
+this ensures the file `/tmp/foo` exist
+
+        & exists (File "/tmp/foo")
+
+and this ensures the file does not exist
+
+        ! exists (File "/tmp/foo")
+
+In most cases it happens what you expect, but sometimes it's not so obvious so we it is written right next to the command.
+(e.g.:) `! exists (File "/tmp/foo")` will delete a file `/tmp/foo` but won't delete a directory `/tmp/foo`
+
+#### !?&,!?!, &?&, &?!
+
+They are special cases of `!` and `&` and should be read like `X if in context Y` -> `X?Y` and start only to make 
+sense in combination of submodules (see later).
+
+* `&?&` is `&` if you are in a `do it` context.
+* `!?&` is `!` if you are in a `do it` context.
+* `&?!` is `&` if you are in a `undo it` context.
+* `!?!` is `!` if you are in a `undo it` context.
+
+for example 
+
+    & (submodule $ []
+      &?& contains (File "/dev/shm/test") ["text"]
+      & exists (Symlink  "~/.vimrc" "/dev/shm/test")
+    )
+
+would be reverted like this
+
+    ! (submodule $ []
+      &?& contains (File "/dev/shm/test") ["text"]
+      & exists (Symlink  "~/.vimrc" "/dev/shm/test")
+    )
+
+which is similar to 
+
+    ! exists (Symlink  "~/.vimrc" "/dev/shm/test")
+    
+
+### `submodule`
+
+to group a bunch of command together to on command you can negate all at once if you want.
+But you can create a much more sophisticated combination of commands using
+`!?&`,`!?!`,`&?&` and `&?!`.
+
+for example 
+
+    & (submodule $ []
+      & contains (File "/dev/shm/test") ["text"]
+      & exists (Symlink  "~/.vimrc" "/dev/shm/test")
+    )
+
+is equivalent to
+
+    & contains (File "/dev/shm/test") ["text"]
+    & exists (Symlink  "~/.vimrc" "/dev/shm/test")
+
+but could be reverted like this
+
+    ! (submodule $ []
+      & contains (File "/dev/shm/test") ["text"]
+      & exists (Symlink  "~/.vimrc" "/dev/shm/test")
+    )
+
+which is equivalent to
+
+    ! contains (File "/dev/shm/test") ["text"]
+    ! exists (Symlink  "~/.vimrc" "/dev/shm/test")
+
+### `requires`
+
+is used to create dependencies like "first do *this*, and when everything is fine do *this*".
+They make most sense with submodules
+
+    & ((submodule $ []
+       & exists (Symlink "~/.vim"   "~/.dot_vim")
+       & exists (Symlink "~/.vimrc" "~/.vim/vimrc")
+      ) 
+      `requires` 
+      (submodule $ []
+       & exists (Git "git@github.com/myrepo/dot_vim.git" "~/.dot_vim" [Recursive])
+      ))
+      
+If `requires` is called in a reverting context (e.g. using `!`) it will also create a dependency 
+but twisted and the body will be reverted as well.
+
+     ! ((submodule $ []
+       & exists (Symlink "~/.vim"   "~/.dot_vim")
+       & exists (Symlink "~/.vimrc" "~/.vim/vimrc")
+      ) 
+      `requires` 
+      (submodule $ []
+       & exists (Git "git@github.com/myrepo/dot_vim.git" "~/.dot_vim" [Recursive])
+      ))
+    
+is equivalent to
+
+     & ((submodule $ []
+       ! exists (Git "git@github.com/myrepo/dot_vim.git" "~/.dot_vim" [Recursive])
+      )
+      `requires` 
+      (submodule $ []
+       ! exists (Symlink "~/.vim"   "~/.dot_vim")
+       ! exists (Symlink "~/.vimrc" "~/.vim/vimrc")
+      ))
+
diff --git a/azubi.cabal b/azubi.cabal
--- a/azubi.cabal
+++ b/azubi.cabal
@@ -10,20 +10,19 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             0.1.0.0
+version:             0.1.0.1
 
 -- A short (one-line) description of the package.
-synopsis: 
-synopsis:            A simple DevOps tool which will "reach" the enterprice level.
+synopsis:            A simple DevOps tool which will never "reach" enterprice level.
 
 -- A longer description of the package.
-description:         A simple DevOps tool which will "reach" the enterprice level.
+description:         A simple DevOps tool which will never "reach" enterprice level.
                      It is basically a Haskell lib which you can use to create
                      nice scripts that setup you computer, via ssh bashscrip,
                      Dockerfile, etc
 
 -- URL for the project homepage or repository.
-homepage:            http://azubi.github.com
+homepage:            http://palovandalo.com/azubi
 
 -- The license under which the package is released.
 license:             GPL-3
@@ -47,7 +46,7 @@
 
 -- Extra files to be distributed with the package, such as examples or a 
 -- README.
--- extra-source-files:  
+extra-source-files:  README.md
 
 -- Constraint on the version of Cabal needed to build this package.
 cabal-version:       >=1.10
@@ -82,38 +81,3 @@
   type:              git
   location:          git@github.com:mrVanDalo/azubi.git
 
-
-executable config
-  -- .hs or .lhs file containing the Main module.
-  main-is:             config.hs
-
-  -- ghc-options:         -Wall
-  -- Modules included in this executable, other than Main.
-  -- other-modules:
-
-  -- LANGUAGE extensions used by modules in this package.
-  -- other-extensions:
-
-  -- Other library packages from which modules are imported.
-  build-depends:       base >=4.7 && < 5
-                     , filepath >=1 && < 2
-                     , options >= 1.2 && < 2
-
-  -- Directories containing source files.
-  hs-source-dirs:      .
-                       , src
-  
-  -- Base language which the package is written in.
-  default-language:    Haskell2010
-
-
-test-suite test
-  build-depends:       base       >= 4.7 && < 5
-                     , filepath   >=1 && < 2
-                     , hspec      >= 2.3
-
-  type:                exitcode-stdio-1.0
-  main-is:             Test.hs
-  hs-source-dirs:      src test
-  default-language:    Haskell2010
-  buildable:           True
diff --git a/config.hs b/config.hs
deleted file mode 100644
--- a/config.hs
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-import Azubi
-
-main :: IO ()
-main = azubiMain azubiSetup
-
-
-azubiSetup :: AzubiConfig
-azubiSetup = azubiConfig Gentoo $ []
-  & contains (File "~/azubi-config/azubi-config.cabal") [ "name:                azubi-config"
-                                                        , "version:             0.1.0.0"
-                                                        , "build-type:          Simple"
-                                                        , "cabal-version:       >=1.10"
-                                                        , ""
-                                                        , "executable config"
-                                                        , "  main-is:             config.hs"
-                                                        , "  build-depends:       base >=4.8 && < 4.9"
-                                                        , "                     , azubi"
-                                                        , "  hs-source-dirs:      ."
-                                                        , "  default-language:    Haskell2010"
-                                                        ]
-  & contains (File "~/azubi-config/config-example.hs") ( map (\c -> "-- | " ++ c ) azubiLogo
-                                                        ++ [ ""
-                                                           , "import Azubi"
-                                                           , ""
-                                                           , "main :: IO ()"
-                                                           , "main = azubiMain $ azubi Gentoo $ []"
-                                                           , "      & installed \"vim\""
-                                                           , "      ! installed \"salt\""
-                                                           ])
-  & contains (File "~/azubi-config/README.md") [ "# Azubi Example"
-                                               , ""
-                                               , "## How to start"
-                                               , ""
-                                               , "copy or link the config-example.hs file to config.hs"
-                                               , "and run cabal configure."
-                                               , "now you can start editing config.hs and run cabal run."
-                                               , "this will create a azubi.sh file you can run."
-                                               , ""
-                                               , "    cabal run && bash azubi.sh"]
-
-
--- | example
---
--- myConfig :: AzubiConfig
--- myConfig = azubiConfig Gentoo $ []
---       & installed "vim"
---       ! installed "salt"
---       & (submodule $ []
---          ! exists (Directory "/dev/shm/azubi-test")
---          & contains (File "/dev/shm/azubi/contains") [ "this is a azubi test-line : " ++ (show i) | i <- [1,2..10]]
---          & exists (Symlink "/dev/shm/azubi-link" "/dev/shm/azubi/contains")
---         )
---       ! (submodule $ []
---          & installed "sub-emacs"
---          & installed "sub-vim"
---         )
---       ! exists (Directory "/dev/shm/Downloads")
---       ! exists (Directory "/dev/shm/Documents")
---       & ((submodule $ []
---           & contains (File "/etc/vim/config") ["# config"]
---          ) `requires` (submodule $ []
---                        & installed "vim"
---                       ))
---       & installed "vim"
---       ! exists (File "/dev/shm")
-
--- next :
--- ------
--- commands
--- git
-
--- | todo : make logfile configurable
-
-
--- sketch on the syntax
---
--- main = do
---  azubi Gentoo $ []
---      & User.exists "palo" [ Uid 1000, Gid 1000 ]
---      & User.exists "renoise" [ Uid 1001, Home "/home/music" ]
---      & running "service"
---      & uptodate (Git "/home/palo/.dot_i3/" "git@github.com/mrVanDalo/dot_i3" "master")                  -- | does pulls
---      & uptodate (GitWithSubmodules "/home/palo/.dot_jack" "git@github.com/mrVanDalo/dot_jack" "master") -- | same but also takes car of submodules
---      & backup (File "/etc/ssh/") (Directory "/backups/etc/ssh") -- | will "cp -a /etc/ssh /backups/etc/ssh/`date`"
---      & published (Git "/home/palo/.dot_shell" "git@github.com/mrVanDalo/dot_shell" "master" "azubi wip message")  -- | creates commits and pushes on the master branch using default message
---
diff --git a/test/Test.hs b/test/Test.hs
deleted file mode 100644
--- a/test/Test.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-import Test.Hspec
-
-import Core.TestSyntax
-
-import Commands.TestInstall
-import Commands.TestFile
-import Commands.TestGit
-
-import Render.TestBashScript
-
--- | tests
-
-main :: IO ()
-main = hspec $ do
-  testInstall
-  testFile
-  testSyntax
-  testGit
-  testBashScript
-
