diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,26 @@
+Copyright (c) 2009, Jason Reich 
+All rights reserved. 
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met: 
+
+ * Redistributions of source code must retain the above copyright notice, 
+   this list of conditions and the following disclaimer. 
+ * Redistributions in binary form must reproduce the above copyright 
+   notice, this list of conditions and the following disclaimer in the 
+   documentation and/or other materials provided with the distribution. 
+ * Neither the name of University of York nor the names of its contributors 
+   may be used to endorse or promote products derived from this software 
+   without specific prior written permission. 
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
+POSSIBILITY OF SUCH DAMAGE. 
diff --git a/OptimusPrime.hs b/OptimusPrime.hs
new file mode 100644
--- /dev/null
+++ b/OptimusPrime.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+
+import System
+import System.IO
+import Flite.Identify
+import Flite.Parsec.Parse
+import Optimus.CallGraph
+import Optimus.Pretty
+import Optimus.Strategy
+import Optimus.Util
+import System.Console.CmdArgs hiding (prog)
+
+data SCArgs = SCArgs { scOption :: SCOption
+					 , targets :: String
+					 , numTargets :: Int
+					 , scFile :: [String] }
+	deriving (Show, Data, Typeable)
+
+data SCOption = Normal | Graph | Auto | List
+	deriving (Show, Data, Typeable, Eq)
+
+version = "OptimusPrime v0.0.1, (C) Jason Reich <jason@cs.york.ac.uk>"
+optimusprime = mode $ SCArgs
+		{ scOption = enum Normal [ Graph &= text "Produce call graph in graphviz DOT format"
+								 , Auto &= text "Automagically select targets for sc"
+								 , List &= text "Output the automagically selected targets" ]
+		, targets = def &= typ "FUNCTIONS" & text "Space-delimited list of functions to target (overrides auto)"
+		, numTargets = def &= typ "NUM" & text "Number of targets to supercompile (default=5)"
+		, scFile = def &= args & typFile
+		} &=
+		text "Supercompiler for f-lite" &
+		helpSuffix [""]
+		
+main = do
+		SCArgs m ts num fs <- cmdArgs version [optimusprime]
+		case fs of
+			[f] -> do
+				p <- parseProgFile f >>= return . identifyFuncs . freshProg desugar
+				let num' = if num == 0 then 5 else num
+				let ts' = if null ts then selectFuncs num' p else words ts
+				case m of
+					Normal 	-> (putProg . supercompile) p
+					Graph 	-> (putStrLn . produceDotTrav . travGraph . freshProg desugar) p
+					Auto	-> (putProg . supercompileMany ts') p
+					List	-> putStrLn $ "Targetted functions: " ++ unwords ts'
+				putStrLn ""
+			otherwise -> cmdArgsHelp version [optimusprime] Text >>= putStr
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,3 @@
+import Distribution.Simple
+
+main = defaultMain
diff --git a/optimusprime.cabal b/optimusprime.cabal
new file mode 100644
--- /dev/null
+++ b/optimusprime.cabal
@@ -0,0 +1,22 @@
+Name:              optimusprime
+version: 0.0.1.20091113
+Synopsis:          A supercompiler for f-lite
+License:           BSD3
+License-file:      LICENSE
+Author:            Jason Reich <jason@cs.york.ac.uk>
+Maintainer:        Jason Reich <jason@cs.york.ac.uk>
+Homepage:          http://optimusprime.posterous.com/
+Stability:         experimental
+Build-Type:        Simple
+Cabal-Version:     >=1.6
+Description:       A supercompiler for f-lite
+Category:          Language, Compiler, Program Transformation
+
+Executable optimusprime
+    Main-is:       OptimusPrime.hs
+    Build-Depends: base >= 3 && < 5, containers >= 0 && < 1,
+                   parsec >= 2.1.0.1 && < 3, flite >= 0 && < 1,
+                   uniplate >= 1.2.0.3 && < 2, wl-pprint >= 1 && < 2,
+                   mtl >= 1.1.0.2 && < 2, fgl >= 5.4.2.2 && < 6,
+                   graphviz >= 2999.6.0.0, haskell98 >= 1 && < 2,
+                   cmdargs >= 0.1 && < 1
