diff --git a/erd.cabal b/erd.cabal
--- a/erd.cabal
+++ b/erd.cabal
@@ -2,7 +2,7 @@
 -- see http://haskell.org/cabal/users-guide/
 
 name:                erd
-version:             0.1.1.0
+version:             0.1.2.0
 homepage:            https://github.com/BurntSushi/erd
 license:             PublicDomain
 license-file:        UNLICENSE
diff --git a/src/Parse.hs b/src/Parse.hs
--- a/src/Parse.hs
+++ b/src/Parse.hs
@@ -147,19 +147,16 @@
                                , card1 = t1, card2 = t2, roptions = opts }
 
 globalOptions :: GlobalOptions -> Parser GlobalOptions
-globalOptions gopts = option "" ident >>= \n ->
-  if null n then
-    return gopts
-  else do
+globalOptions gopts =
+  option gopts $ try $ do
+    n <- ident 
     opts <- options
     case n of
       "title"        -> emptiness >> globalOptions (gopts { gtoptions = opts})
       "header"       -> emptiness >> globalOptions (gopts { ghoptions = opts})
       "entity"       -> emptiness >> globalOptions (gopts { geoptions = opts})
       "relationship" -> emptiness >> globalOptions (gopts { groptions = opts})
-      _ -> unexpected (printf ("Global option group '%s' is not valid. (Valid "
-                              ++ "groups are title, header, entity, "
-                              ++ "relationship.)") (unpack n))
+      _ -> fail "not a valid directive"
 
 options :: Parser (M.Map String Option)
 options =
