diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c) 2012, Tobias Dammers
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Tobias Dammers nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Main.hs b/Main.hs
new file mode 100644
--- /dev/null
+++ b/Main.hs
@@ -0,0 +1,82 @@
+module Main where
+
+import CommandArgs
+import Control.Monad (liftM)
+import Data.List
+import Data.Maybe
+import Prelude hiding (getContents)
+import System.FilePath
+import System.IO (withFile, IOMode (ReadMode, WriteMode), hPutStr)
+import System.IO.Strict
+import Text.HPaco.Readers.Paco
+import Text.HPaco.Optimizer
+import qualified Text.HPaco.Writers.PHP as PHP
+import qualified Text.HPaco.Writers.Run as Run
+import qualified Text.HPaco.Writers.Javascript as JS
+import Text.HPaco.Writer (Writer)
+
+main = do
+    argStruct <- parseArgs
+    let filenames = caInputFiles argStruct
+
+    if null filenames
+        then processStdin argStruct
+        else mapM_ (processFile argStruct) filenames
+
+processStdin :: CommandArgs -> IO ()
+processStdin cmdargs =
+    getContents >>= process cmdargs "" "<STDIN>" >>= putStr
+
+processFile :: CommandArgs -> FilePath -> IO ()
+processFile cmdargs srcFilename = do
+    src <- withFile srcFilename ReadMode hGetContents
+    let dstFilename = replaceExtension srcFilename (outputFormatExtension . caOutputFormat $ cmdargs)
+    dst <- process cmdargs (takeBaseName srcFilename) srcFilename src
+    withFile dstFilename WriteMode $ \f -> hPutStr f dst
+
+process :: CommandArgs -> String -> FilePath -> String -> IO String
+process cmdargs templateName filename src = do
+    let reader = readPaco filename
+        write = getWriter cmdargs templateName
+        rundata = caRunData cmdargs
+        pre = "{%with " ++ rundata ++ " %}\n"
+        post = "{%endwith%}\n"
+        src' = if null rundata
+                    then src
+                    else pre ++ src ++ post
+        opt = case caOptimizationLevel cmdargs of
+                1 -> optimize
+                otherwise -> id
+    ast <- reader src'
+    case caOutputFormat cmdargs of
+        RunInterpreted -> runInterpreted (opt ast) cmdargs templateName >> return "\n"
+        otherwise -> return . write . opt $ ast
+    where runInterpreted ast cmdargs templateName =
+            let opts = Run.defaultOptions
+                        { Run.roTemplateName = templateName `fromMaybe` (caTemplateName cmdargs)
+                        }
+            in Run.run opts ast
+
+outputFormatExtension :: OutputFormat -> String
+outputFormatExtension OutputPHP = "php"
+outputFormatExtension OutputJavascript = "js"
+
+getWriter :: CommandArgs -> String -> Writer
+getWriter cmdargs templateName =
+    go (caOutputFormat cmdargs) cmdargs templateName
+    where
+        go :: OutputFormat -> CommandArgs -> String -> Writer
+        go OutputJavascript cmdargs templateName =
+            JS.writeJavascript $ JS.defaultWriterOptions
+                                    { JS.woPrettyPrint = caJsPretty cmdargs
+                                    , JS.woTemplateName = templateName `fromMaybe` (caTemplateName cmdargs)
+                                    , JS.woWrapMode = caJsWrapMode cmdargs
+                                    }
+        go OutputPHP cmdargs templateName =
+            PHP.writePHP $ PHP.defaultWriterOptions
+                                { PHP.woPrettyPrint = caPhpPretty cmdargs
+                                , PHP.woTemplateName = templateName `fromMaybe` (caTemplateName cmdargs)
+                                , PHP.woIncludePreamble = not . caPhpNoPreamble $ cmdargs
+                                , PHP.woWrapMode = caPhpWrapMode cmdargs
+                                , PHP.woExposeAllFunctions = caPhpExposeAllFunctions cmdargs
+                                }
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/hpaco.cabal b/hpaco.cabal
new file mode 100644
--- /dev/null
+++ b/hpaco.cabal
@@ -0,0 +1,26 @@
+name:                hpaco
+version:             0.11.0.6
+synopsis:            Modular template compiler
+description:         CLI front-end to the hpaco-lib library. Compiles Paco
+                     template source code to JavaScript or PHP, or interprets
+                     it directly.
+homepage:            https://bitbucket.org/tdammers/hpaco
+license:             BSD3
+license-file:        LICENSE
+author:              Tobias Dammers
+maintainer:          tdammers@gmail.com
+-- copyright:           
+category:            Development
+build-type:          Simple
+cabal-version:       >=1.8
+
+executable hpaco
+  main-is:             Main.hs
+  -- other-modules:       
+  build-depends:       base == 4.*
+               ,       filepath >= 1.1 && < 1.4
+               ,       cmdargs >= 0.9 && < 0.10
+               , hpaco-lib == 0.11.0.6
+               ,       strict == 0.3.*
+               -- ,       split >= 0.1 && < 0.2
+               -- ,       safe >= 0.3.3 && < 0.4
