diff --git a/Main.hs b/Main.hs
index 8abb7c55f..90f3301f5 100644
--- a/Main.hs
+++ b/Main.hs
@@ -41,7 +41,7 @@ import System.Console.GetOpt
 import Data.Maybe ( fromMaybe )
 import Data.Char ( toLower )
 import Prelude hiding ( putStrLn, writeFile, readFile, getContents )
-#ifdef UTF_8
+#ifdef _UTF8
 import System.IO.UTF8
 import System.IO ( stdout, stderr )
 #else
@@ -54,13 +54,17 @@ copyrightMessage = "\nCopyright (C) 2006-7 John MacFarlane\n" ++
                     "This is free software; see the source for copying conditions.  There is no\n" ++
                     "warranty, not even for merchantability or fitness for a particular purpose."
 
-compileOptions :: String
-compileOptions =
+compileInfo :: String
+compileInfo = "Compiled" ++
+#ifdef _UTF8
+  " with UTF-8 support" ++
+#else
+  " without UTF-8 support" ++
+#endif
   if null languages
-     then "\nCompiled without syntax highlighting support."
-     else "\nCompiled with syntax highlighting support for the following languages:\n" ++ 
-          (unlines $ map unwords $ chunk 5 $ 
-           map (\s -> s ++ replicate (15 - length s) ' ') languages)
+     then " and without syntax highlighting support."
+     else " and with syntax highlighting support for:\n" ++
+          (unlines $ map unwords $ chunk 5 $ map (\s -> s ++ replicate (15 - length s) ' ') languages)
 
 -- | Splits a list into groups of at most n.
 chunk :: Int -> [a] -> [[a]]
@@ -344,7 +348,7 @@ options =
                  (NoArg
                   (\_ -> do
                      prg <- getProgName
-                     hPutStrLn stderr (prg ++ " " ++ pandocVersion ++ compileOptions ++
+                     hPutStrLn stderr (prg ++ " " ++ pandocVersion ++ "\n" ++ compileInfo ++
                                        copyrightMessage)
                      exitWith $ ExitFailure 4))
                  "" -- "Print version"
diff --git a/Text/Pandoc/Highlighting.hs b/Text/Pandoc/Highlighting.hs
index f9d69f2c2..6726f1a42 100644
--- a/Text/Pandoc/Highlighting.hs
+++ b/Text/Pandoc/Highlighting.hs
@@ -32,7 +32,7 @@ Exports functions for syntax highlighting.
 module Text.Pandoc.Highlighting ( languages, highlightHtml, defaultHighlightingCss ) where
 import Text.XHtml
 import Text.Pandoc.Definition
-#ifdef HIGHLIGHTING
+#ifdef _HIGHLIGHTING
 import Text.Highlighting.Kate ( languages, highlightAs, formatAsXHtml, FormatOption (..), defaultHighlightingCss )
 import Data.List (find, lookup)
 import Data.Maybe (fromMaybe)
diff --git a/Text/Pandoc/ODT.hs b/Text/Pandoc/ODT.hs
index b44cb303f..b0bfc6693 100644
--- a/Text/Pandoc/ODT.hs
+++ b/Text/Pandoc/ODT.hs
@@ -43,7 +43,7 @@ import Network.URI ( isURI )
 import qualified Data.ByteString as B ( writeFile, pack )
 import Data.ByteString.Internal ( c2w )
 import Prelude hiding ( writeFile, readFile )
-#ifdef UTF_8
+#ifdef _UTF8
 import System.IO.UTF8
 import System.IO ( stderr )
 #else
diff --git a/Text/Pandoc/Shared.hs b/Text/Pandoc/Shared.hs
index eb924239d..6ae507cfa 100644
--- a/Text/Pandoc/Shared.hs
+++ b/Text/Pandoc/Shared.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-
 Copyright (C) 2006-8 John MacFarlane <jgm@berkeley.edu>
 
@@ -115,6 +116,12 @@ import Network.URI ( parseURI, URI (..), isAllowedInURI )
 import System.FilePath ( (</>), (<.>) )
 import System.IO.Error ( catch, ioError, isAlreadyExistsError )
 import System.Directory
+import Prelude hiding ( putStrLn )
+#ifdef _UTF8
+import System.IO.UTF8
+#else
+import System.IO
+#endif
 
 --
 -- List processing
@@ -612,7 +619,7 @@ readWith parser state input =
 testStringWith :: (Show a) => GenParser Char ParserState a
                -> String
                -> IO ()
-testStringWith parser str = putStrLn $ show $ 
+testStringWith parser str = putStrLn $ show $
                             readWith parser defaultParserState str
 
 -- | Parsing options.
diff --git a/Text/Pandoc/TH.hs b/Text/Pandoc/TH.hs
index 5e486b039..30f5c86e4 100644
--- a/Text/Pandoc/TH.hs
+++ b/Text/Pandoc/TH.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 {-
 Copyright (C) 2008 John MacFarlane <jgm@berkeley.edu>
@@ -37,6 +38,12 @@ import Language.Haskell.TH
 import Language.Haskell.TH.Syntax (Lift (..))
 import qualified Data.ByteString as B
 import Data.ByteString.Internal ( w2c )
+import Prelude hiding ( readFile )
+#ifdef _UTF8
+import System.IO.UTF8
+#else
+import System.IO
+#endif
 
 -- | Insert contents of text file into a template.
 contentsOf :: FilePath -> ExpQ
diff --git a/pandoc.cabal b/pandoc.cabal
index fd5ab1e9c..727a91c41 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -57,7 +57,7 @@ Flag splitBase
   Default:       True
 Flag highlighting
   Description:   Compile in support for syntax highlighting of code blocks.
-  Default:       False
+  Default:       True
 Flag executable
   Description:   Build the pandoc executable.
   Default:       True
@@ -75,10 +75,10 @@ Library
     Build-Depends: base < 3
   if flag(highlighting)
     Build-depends: highlighting-kate
-    cpp-options:   -DHIGHLIGHTING
+    cpp-options:   -D_HIGHLIGHTING
   if flag(utf8)
     Build-depends: utf8-string
-    cpp-options:   -DUTF_8
+    cpp-options:   -D_UTF8
   Build-Depends: parsec < 3, xhtml, mtl, network, filepath, process, directory,
                  template-haskell, bytestring
   Hs-Source-Dirs:  .
@@ -130,9 +130,12 @@ Executable pandoc
   Main-Is:            Main.hs
   Ghc-Options:        -O2 -Wall -threaded
   Ghc-Prof-Options:   -auto-all
+  Extensions:         CPP
 
+  if flag(highlighting)
+    cpp-options:   -D_HIGHLIGHTING
   if flag(utf8)
-    cpp-options:   -DUTF_8
+    cpp-options:   -D_UTF8
   if flag(executable)
     Buildable:      True
   else