diff --git a/Blogdown.cabal b/Blogdown.cabal
--- a/Blogdown.cabal
+++ b/Blogdown.cabal
@@ -1,5 +1,5 @@
 name:                Blogdown
-version:             0.2.0
+version:             0.2.1
 synopsis:            A markdown-like markup language designed for blog posts
 description:         A library and executable that implement a modified, extended version of Markdown designed for writing blog posts.
 license:             AGPL-3
@@ -15,8 +15,8 @@
 cabal-version:       >=1.10
 
 library
-  exposed-modules:     Parsing.Parse, Rendering.Render, Rendering.RenderOptions
-  other-modules:       AST, Parsing.ParseBlock, Parsing.ParseInline, Parsing.Text, Parsing.Utils, Parsing.ParseFootnotes, Parsing.ParseHtml, Parsing.State, Parsing.TextUtils
+  exposed-modules:     Parsing.Parse, Parsing.ParseOptions, Rendering.Render, Rendering.RenderOptions
+  other-modules:       AST, Options, Parsing.ParseBlock, Parsing.ParseInline, Parsing.Text, Parsing.Utils, Parsing.ParseFootnotes, Parsing.ParseHtml, Parsing.State, Parsing.TextUtils
   other-extensions:    DeriveGeneric
   build-depends:       base >=4.9 && <4.10, parsec >=3.1 && <3.2, containers >=0.5 && <0.6, MissingH >=1.4 && <1.5, network-uri >=2.6 && <2.7
   hs-source-dirs:      src, assets
diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Revision history for Blogdown
 
+### 0.2.1 -- 2017-05-21
+
+* Fix cabal build.
+* Fix benchmarks.
+
 ## 0.2.0 -- 2017-05-21
 
 * Add image support.
diff --git a/src/Options.hs b/src/Options.hs
new file mode 100644
--- /dev/null
+++ b/src/Options.hs
@@ -0,0 +1,31 @@
+module Options where
+
+import Data.Either
+import Data.List
+import qualified Data.Map.Strict as M
+import System.Environment (getArgs)
+
+import Parsing.ParseOptions
+import Rendering.RenderOptions
+
+isNotFlag :: String -> Bool
+isNotFlag s = not $ isPrefixOf "--" s
+
+splitArgsByFlag :: [String] -> [[String]]
+splitArgsByFlag [] = []
+splitArgsByFlag (flag : args) = (flag : (takeWhile isNotFlag args)) : (splitArgsByFlag $ dropWhile isNotFlag args)
+
+option :: [String] -> Either (ParseOptions -> ParseOptions) (RenderOptions -> RenderOptions)
+option (flag: flagArgs) = if M.member flag parseOptions
+    then Left $ (parseOptions M.! flag) flagArgs
+    else Right $ (renderOptions M.! flag) flagArgs
+
+options :: [String] -> (ParseOptions, RenderOptions)
+options args = (foldl (.) id parseOptionsMods defaultParseOptions,
+                foldl (.) id renderOptionsMods defaultRenderOptions)
+    where
+        eitherMods = map option $ splitArgsByFlag args
+        (parseOptionsMods, renderOptionsMods) = partitionEithers eitherMods
+
+getOptions :: IO (ParseOptions, RenderOptions)
+getOptions = fmap options getArgs
diff --git a/src/Parsing/ParseOptions.hs b/src/Parsing/ParseOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/Parsing/ParseOptions.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE DeriveGeneric #-}
+
+module Parsing.ParseOptions where
+
+import qualified Data.Map.Strict as M
+import GHC.Generics (Generic)
+
+data ParseOptions = ParseOptions {
+    allowUnsafeTags :: Bool
+} deriving (Show, Generic)
+
+defaultParseOptions = ParseOptions {
+    allowUnsafeTags = False 
+}
+
+parseOptions :: M.Map String ([String] -> ParseOptions -> ParseOptions)
+parseOptions = M.fromList [
+    ("--allow-unsafe-tags", \_ -> \p -> p {allowUnsafeTags=True})]
diff --git a/test/Benchmark.hs b/test/Benchmark.hs
--- a/test/Benchmark.hs
+++ b/test/Benchmark.hs
@@ -4,12 +4,13 @@
 import Data.Either
 import Data.String.Utils (replace)
 
-import Parsing.Parse
-import Rendering.Render
-import Rendering.RenderOptions
+import Parsing.Parse (parse)
+import Parsing.ParseOptions (defaultParseOptions)
+import Rendering.Render (toHtml)
+import Rendering.RenderOptions (RenderOptions, defaultRenderOptions, inlineCSS, inlineJS)
 
 parseAndRender :: RenderOptions -> String -> String
-parseAndRender options = either show (toHtml options) . parse
+parseAndRender options = either show (toHtml options) . parse defaultParseOptions
 
 main :: IO ()
 main = do
