diff --git a/embeddock.cabal b/embeddock.cabal
--- a/embeddock.cabal
+++ b/embeddock.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                embeddock
-version:             0.1.0.1
+version:             0.2
 synopsis:            Embed the values in scope in the haddock documentation of the module
 description:         embeddock is a Haskell source-code preprocessor. 
                      It allows you to embed computer-generated 
@@ -21,11 +21,16 @@
 build-type:          Simple
 cabal-version:       >=1.8
 
+library
+  hs-source-dirs:      src/
+  exposed-modules:   Embeddock.Example
+  build-depends:       base >=4.5 && <5
+
 executable embeddock
   main-is:             main.hs
   hs-source-dirs:      src/
   -- other-modules:       
-  build-depends:       base ==4.6.*
+  build-depends:       base >=4.5 && <5
                      , filepath >= 1.3
                      , her-lexer >= 0.1.1
                      , MissingH >= 1.2
diff --git a/src/Embeddock/Example.hs b/src/Embeddock/Example.hs
new file mode 100644
--- /dev/null
+++ b/src/Embeddock/Example.hs
@@ -0,0 +1,29 @@
+{-# OPTIONS_GHC -F -pgmF embeddock -optF $EMBED$ #-}
+
+{- | To use embeddock, place the following preprocessor pragma at the
+ beginning of your source code.
+
+ > {-# OPTIONS_GHC -F -pgmF embeddock -optF $EMBED$ #-}
+
+ You can specify the embed string by @-optF@. The default embed
+ string is "$" . Expressions in parenthesis that immediately follow
+ the embed strings are treated as embed expression. Embed
+ expressions are evaluated in the context of the module. The result
+ should be of type string.
+
+ Please look at the source code of this module for an usecase of
+ @embeddock@.
+
+ At the moment, embeddock is not compatible with one-liner comment "--"
+ due to the backend lexer.
+-}
+
+module Embeddock.Example where
+
+
+{- | An answer to the life, the universe and everything.
+ the answer is $EMBED$(show answer) .
+-}
+
+answer :: Integer
+answer = 6*7
diff --git a/src/main.hs b/src/main.hs
--- a/src/main.hs
+++ b/src/main.hs
@@ -13,7 +13,10 @@
 
 main :: IO ()
 main = do
-  (srcPath:_:destPath:ppOpts) <- getArgs
+  argv <- getArgs
+  let (srcPath:_:destPath:ppOpts) 
+          | length argv >= 3 = argv
+          | otherwise        = take 3 $ argv ++ repeat ""
   src <- readFile srcPath
   let
     embedKey :: String
@@ -52,8 +55,9 @@
 
     runnerFn = srcDir </> ("." ++ srcFnBody ++ "_embeddock") <.> srcExt
 
-    destContent = tokssOut parsedSrc
 
+    destContent = tokssOut   parsedSrc
+
     quineMain = unlines $ "main = do" :map mkPrinter parsedSrc
 
     mkPrinter :: [Tok] -> String
@@ -104,6 +108,9 @@
 
   when (not isEmbedLoop) $ do
     writeFile runnerFn $ destContent ++ "\n" ++ quineMain
-    (_, hOut, _, _) <- runInteractiveCommand $
+    (_, hOut, hErr, _) <- runInteractiveCommand $
       printf "runhaskell %s %s" (unwords runhaskellArgs) runnerFn
-    hGetContents hOut >>= writeFile destPath
+    hGetContents hErr >>= hPutStr stderr
+    hGetContents hOut >>= 
+      (if destPath /= "" then writeFile destPath
+                         else putStrLn )
