diff --git a/leaf.cabal b/leaf.cabal
--- a/leaf.cabal
+++ b/leaf.cabal
@@ -2,15 +2,15 @@
 -- see http://haskell.org/cabal/users-guide/
 
 name:                  leaf
-version:               1.0.0.0
+version:               1.0.1.1
 synopsis:              A simple portfolio generator
-description:           leaf is a simple genererator with easy getting started and full support of Markdown.
+description:           leaf is a simple generator with easy getting started and full support of Markdown.
 homepage:              https://github.com/skypers/leaf
 license:               GPL-3
 license-file:          LICENSE
 author:                Dimitri 'skp' Sabadie
 maintainer:            dimitri.sabadie@gmail.com
--- copyright:             
+-- copyright:
 category:              Web
 build-type:            Simple
 cabal-version:         >=1.8
@@ -25,7 +25,7 @@
 source-repository this
   type:                git
   location:            git://github.com/skypers/leaf.git
-  tag:                 v1.0
+  tag:                 1.0.1.1
 
 
 executable leaf
diff --git a/src/Leaf.hs b/src/Leaf.hs
--- a/src/Leaf.hs
+++ b/src/Leaf.hs
@@ -37,7 +37,7 @@
 treatArgs flag =
   case flag of
     Init name -> initFromScratch name
-    Bootstrap -> bootstrap
+    Bootstrap -> bootstrap >> return ()
     Generate  -> generateHTML
 
 initFromScratch :: String -> IO ()
@@ -47,34 +47,46 @@
   writeFile (name </> "www/default.css") minimalCSSString
   putStrLn $ "initialised in ./" ++ name
 
--- get the items of the current porfolio
--- TODO: make it safer
-getItems :: IO [String]
+getItems :: IO (Maybe [String])
 getItems = do
-  content <- readFile "leaf/wrapper.leaf"
-  return . map (dropWhile (==' ')) . splitWhen (==',') . join . drop 1 . splitWhen (==':') . join . filter (isPrefixOf "Items:") . lines $ content
+  let path = "leaf" </> "wrapper.leaf"
+  doesExist <- doesFileExist path
+  if not doesExist then return Nothing else do
+    content <- readFile "leaf/wrapper.leaf"
+    return . Just $ map (dropWhile (==' ')) . splitWhen (==',') . join . drop 1 . splitWhen (==':') . join . filter (isPrefixOf "Items:") . lines $ content
 
-bootstrap :: IO ()
+bootstrap :: IO Bool
 bootstrap = do
-  items <- getItems
-  sequence_ $ flip appendFile "" . (\n -> "leaf" </> n ++ ".leafc") <$> items
-  putStrLn "generated files, feel free to fulfil them!"
+  maybeItems <- getItems
+  case maybeItems of
+    Nothing -> putStrLn "unable to bootstrap" >> return False
+    Just items -> do
+      sequence_ $ flip appendFile "" . (\n -> "leaf" </> n ++ ".leafc") <$> items
+      putStrLn "generated files, feel free to fulfil them!"
+      return True
 
 generateHTML :: IO ()
 generateHTML = do
-  wrapperContent <- readFile "leaf/wrapper.leaf"
-  let helper = fromString wrapperContent
-      name = prettyName (_wrapperFN helper,_wrapperLN helper,_wrapperNick helper)
-      ownHeader = Wrapper.header name
-      ownFooter = Wrapper.footer name (_wrapperYear helper) Nothing
-      ownNavbar = navbar $ _wrapperItems helper
-      ownWrapper = wrapper ownHeader ownFooter ownNavbar
-  forM_ (_wrapperItems helper) $ \item -> do
-    --let page = "www" </> item ++ ".html"
-    content <- readFile $ "leaf" </> item ++ ".leafc"
-    let doc    = readMarkdown def content
-        output = writeHtml def doc
-    writeFile ("www" </> item ++ ".html") $ renderHtml (ownWrapper item output)
+  let leafPath = "leaf" </> "wrapper.leaf"
+      wwwPath  = "www"
+  doesLeafExist <- doesFileExist leafPath
+  doesWWWExist <- doesDirectoryExist wwwPath
+  if doesLeafExist && doesWWWExist
+    then do
+      wrapperContent <- readFile "leaf/wrapper.leaf"
+      let helper = fromString wrapperContent
+          name = prettyName (_wrapperFN helper,_wrapperLN helper,_wrapperNick helper)
+          ownHeader = Wrapper.header name
+          ownFooter = Wrapper.footer name (_wrapperYear helper) Nothing
+          ownNavbar = navbar $ _wrapperItems helper
+          ownWrapper = wrapper ownHeader ownFooter ownNavbar
+      forM_ (_wrapperItems helper) $ \item -> do
+        --let page = "www" </> item ++ ".html"
+        content <- readFile $ "leaf" </> item ++ ".leafc"
+        let doc    = readMarkdown def content
+            output = writeHtml def doc
+        writeFile ("www" </> item ++ ".html") $ renderHtml (ownWrapper item output)
+    else putStrLn "unable to generate html"
   
 main = do
   -- maybe get the options
