diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -1,15 +1,16 @@
 module Main where
 
 import CommandArgs
-import Control.Monad (liftM)
+import Control.Monad (liftM, when)
 import Data.List
 import Data.Maybe
 import Prelude hiding (getContents)
 import System.FilePath
-import System.IO (withFile, IOMode (ReadMode, WriteMode), hPutStr)
+import System.IO (withFile, IOMode (ReadMode, WriteMode), hPutStr, hPutStrLn, stdout)
 import System.IO.Strict
 import Text.HPaco.Readers.Paco
 import Text.HPaco.Optimizer
+import Text.HPaco.Writer as W
 import qualified Text.HPaco.Writers.PHP as PHP
 import qualified Text.HPaco.Writers.Run as Run
 import qualified Text.HPaco.Writers.Javascript as JS
@@ -19,6 +20,9 @@
 
 main = do
     argStruct <- parseArgs
+    let optimizationLevel = caOptimizationLevel argStruct
+    when (optimizationLevel > 1) $
+        hPutStrLn stdout $ "Warning: Optimization level " ++ show optimizationLevel ++ " requested, using 1 instead"
     let filenames = caInputFiles argStruct
 
     if null filenames
@@ -51,9 +55,10 @@
         src' = if null rundata
                     then src
                     else pre ++ src ++ post
-        opt = case caOptimizationLevel cmdargs of
-                1 -> optimize
-                otherwise -> id
+        optimizationLevel = caOptimizationLevel cmdargs 
+        opt = case optimizationLevel of
+                0 -> id
+                otherwise -> optimize
     ast <- reader src'
     case caOutputFormat cmdargs of
         RunInterpreted -> runInterpreted (opt ast) cmdargs templateName >> return "\n"
@@ -83,16 +88,16 @@
         go OutputJsonLisp cmdargs templateName =
             JsonLisp.writeJsonLisp
         go OutputJavascript cmdargs templateName =
-            JS.writeJavascript $ JS.defaultWriterOptions
-                                    { JS.woPrettyPrint = caJsPretty cmdargs
-                                    , JS.woTemplateName = templateName `fromMaybe` (caTemplateName cmdargs)
-                                    , JS.woWrapMode = caJsWrapMode cmdargs
+            JS.writeJavascript $ JS.defJsWriterOptions
+                                    { woPrettyPrint = caJsPretty cmdargs
+                                    , woTemplateName = templateName `fromMaybe` (caTemplateName cmdargs)
+                                    , 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
+            PHP.writePHP $ PHP.defPHPWriterOptions
+                                { woPrettyPrint = caPhpPretty cmdargs
+                                , woTemplateName = templateName `fromMaybe` (caTemplateName cmdargs)
+                                , woIncludePreamble = not . caPhpNoPreamble $ cmdargs
+                                , woWrapMode = caPhpWrapMode cmdargs
+                                , woExposeAllFunctions = caPhpExposeAllFunctions cmdargs
                                 }
diff --git a/hpaco.cabal b/hpaco.cabal
--- a/hpaco.cabal
+++ b/hpaco.cabal
@@ -1,5 +1,5 @@
 name:                hpaco
-version:             0.16.1.0
+version:             0.16.2.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.16.1.0
+               , hpaco-lib == 0.16.2.0
                ,       strict == 0.3.*
                -- ,       split >= 0.1 && < 0.2
                -- ,       safe >= 0.3.3 && < 0.4
