diff --git a/ParseArgs.hs b/ParseArgs.hs
new file mode 100644
--- /dev/null
+++ b/ParseArgs.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+module ParseArgs (
+   parseArgs
+) where
+
+import System.Console.CmdArgs
+import System.Environment (getProgName)
+
+data Options = Options
+   { query :: String
+   , file  :: [String]
+   , output :: String
+   , positional :: [String]
+   }
+  deriving (Data, Typeable)
+
+options = Options
+  { query  = def &= typ "QUERY" &= help "Set Prolog query (If not set, first positional argument is used)"
+  , file   = def &= typ "FILE"  &= help "Consult file before executing query"
+  , output = "graph.png" &= typ "FILE"  &= help "Save generated image to file (default: 'graph.png')"
+  , positional = def &= args &= typ "QUERY [FILE]..."
+  }
+  &= versionArg [ignore]
+  &= helpArg [name "h"]
+
+parseArgs = do
+   opts <- getProgName >>= cmdArgs . ((options &=) . program)
+   return $ case opts of
+      Options q fs o []      -> (q, fs,      o)
+      Options _ fs o [q]     -> (q, fs,      o)
+      Options _ fs o (q:fs') -> (q, fs++fs', o)
diff --git a/prolog-graph.cabal b/prolog-graph.cabal
--- a/prolog-graph.cabal
+++ b/prolog-graph.cabal
@@ -1,5 +1,5 @@
 Name:                prolog-graph
-Version:             0.1.0.1
+Version:             0.1.0.2
 Synopsis:            A command line tool to visualize query resolution in Prolog.
 Description:         This package installs the command line tool `hsprolog-graph` that
                      generates images of resolution trees for given Prolog queries.
@@ -19,6 +19,7 @@
 
 Executable hsprolog-graph
   Main-is: Main.hs
+  Other-Modules: ParseArgs
 
   Build-depends:
     prolog == 0.1.*,
