diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -13,6 +13,8 @@
 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 qualified Text.HPaco.Writers.Dependencies as Deps
+import qualified Text.HPaco.Writers.JsonLisp as JsonLisp
 import Text.HPaco.Writer (Writer)
 
 main = do
@@ -27,12 +29,17 @@
 processStdin cmdargs =
     getContents >>= process cmdargs "" "<STDIN>" >>= putStr
 
+outputFilename :: CommandArgs -> FilePath -> FilePath
+outputFilename cmdargs srcFilename = replaceExtension srcFilename (outputFormatExtension . caOutputFormat $ cmdargs)
+
 processFile :: CommandArgs -> FilePath -> IO ()
 processFile cmdargs srcFilename = do
     src <- withFile srcFilename ReadMode hGetContents
-    let dstFilename = replaceExtension srcFilename (outputFormatExtension . caOutputFormat $ cmdargs)
+    let dstFilename = outputFilename cmdargs srcFilename
     dst <- process cmdargs (takeBaseName srcFilename) srcFilename src
-    withFile dstFilename WriteMode $ \f -> hPutStr f dst
+    if caToStdout cmdargs
+        then putStr dst
+        else withFile dstFilename WriteMode $ flip hPutStr dst
 
 process :: CommandArgs -> String -> FilePath -> String -> IO String
 process cmdargs templateName filename src = do
@@ -50,6 +57,7 @@
     ast <- reader src'
     case caOutputFormat cmdargs of
         RunInterpreted -> runInterpreted (opt ast) cmdargs templateName >> return "\n"
+        ListDependencies -> return . (getWriter cmdargs filename) $ ast
         otherwise -> return . write . opt $ ast
     where runInterpreted ast cmdargs templateName =
             let opts = Run.defaultOptions
@@ -60,12 +68,20 @@
 outputFormatExtension :: OutputFormat -> String
 outputFormatExtension OutputPHP = "php"
 outputFormatExtension OutputJavascript = "js"
+outputFormatExtension OutputJsonLisp = "jslisp"
+outputFormatExtension RunInterpreted = ""
+outputFormatExtension ListDependencies = "dep"
 
 getWriter :: CommandArgs -> String -> Writer
 getWriter cmdargs templateName =
     go (caOutputFormat cmdargs) cmdargs templateName
     where
         go :: OutputFormat -> CommandArgs -> String -> Writer
+        go DumpRawAST _ _ = show
+        go ListDependencies cmdargs templateName =
+            Deps.writeDependencies templateName
+        go OutputJsonLisp cmdargs templateName =
+            JsonLisp.writeJsonLisp
         go OutputJavascript cmdargs templateName =
             JS.writeJavascript $ JS.defaultWriterOptions
                                     { JS.woPrettyPrint = caJsPretty cmdargs
diff --git a/hpaco.cabal b/hpaco.cabal
--- a/hpaco.cabal
+++ b/hpaco.cabal
@@ -1,5 +1,5 @@
 name:                hpaco
-version:             0.11.0.6
+version:             0.16.1.0
 synopsis:            Modular template compiler
 description:         CLI front-end to the hpaco-lib library. Compiles Paco
                      template source code to JavaScript or PHP, or interprets
@@ -20,7 +20,7 @@
   build-depends:       base == 4.*
                ,       filepath >= 1.1 && < 1.4
                ,       cmdargs >= 0.9 && < 0.10
-               , hpaco-lib == 0.11.0.6
+               , hpaco-lib == 0.16.1.0
                ,       strict == 0.3.*
                -- ,       split >= 0.1 && < 0.2
                -- ,       safe >= 0.3.3 && < 0.4
