diff --git a/buildbox-tools.cabal b/buildbox-tools.cabal
--- a/buildbox-tools.cabal
+++ b/buildbox-tools.cabal
@@ -1,5 +1,5 @@
 Name:                buildbox-tools
-Version:             1.3.0.1
+Version:             1.5.0.1
 License:             BSD3
 License-file:        LICENSE
 Author:              Ben Lippmeier
@@ -21,7 +21,7 @@
 Executable buildbox-results
   Build-depends: 
         base                 == 4.*,
-        buildbox             == 1.3.*,
-        parseargs            == 0.1.*
+        buildbox             == 1.5.*,
+        parseargs            == 0.1.3.*
   Main-is: Main.hs
   hs-source-dirs: results 
diff --git a/results/Main.hs b/results/Main.hs
--- a/results/Main.hs
+++ b/results/Main.hs
@@ -5,10 +5,11 @@
 import BuildBox.FileFormat.BuildResults
 import System.Console.ParseArgs	hiding (args)
 import Data.List
+import Control.Monad
 
 main :: IO ()
 main 
- = do	args	<- parseArgsIO ArgsTrailing resultsArgs
+ = do	args	<- parseArgsIO (ArgsTrailing "files") resultsArgs
 	mainWithArgs args
 
 mainWithArgs :: Args ResultsArg -> IO ()
@@ -35,21 +36,7 @@
 			$ vcat
 			$ map (text . benchResultName)
 			$ buildResultBench results
-
-
-	-- Merge two results files, prefering benchmark results on the left.
-	-- The time and environment fields are taken from the file on the right.
-	| gotArg args ArgMerge
-	= do	
-		-- Read all the files.
-		let fileNames	= argsRest args
-		contentss <- mapM readFile fileNames
-		let (results :: [BuildResults])
-			  = map read contentss
 			
-		print $ mergeResults results
-
-		
 	-- Compare two results files.
 	| gotArg args ArgCompare
 	= do	let fileNames	= argsRest args
@@ -66,7 +53,7 @@
 				(map statBenchResult baseline)
 				(map statBenchResult current)
 
-	-- Compare two results files.
+	-- Compare two results files and summarise them.
 	| Just swing	<- getArg args ArgSummarise
 	= do	let fileNames	= argsRest args
 		contentss	<- mapM readFile fileNames
@@ -78,7 +65,37 @@
 			$ compareManyBenchResults 
 				(map statBenchResult baseline)
 				(map statBenchResult current)
-			 
+
+	-- Merge two results files, prefering benchmark results on the left.
+	-- The time and environment fields are taken from the file on the right.
+	| gotArg args ArgMerge
+	= do	
+		-- Read all the files.
+		let fileNames	= argsRest args
+		contentss <- mapM readFile fileNames
+		let (results :: [BuildResults])
+			  = map read contentss
+			
+		print $ mergeResults results
+
+	-- Accept the most recent run of a named benchmark.
+	| Just name	<- getArg args ArgAccept
+	, [fileBase, fileRecent] <- argsRest args
+	= do	baseline	<- liftM read $ readFile fileBase
+		recent		<- liftM read $ readFile fileRecent
+		let Just result	= acceptResult name baseline recent
+		print	$ result
+	
+	-- Advance winning results to form a new baseline.
+	| Just swing	<- getArg args ArgAdvance
+	= do	let fileNames	= argsRest args
+		contentss <- mapM readFile fileNames
+
+		let ([baseline, recent] :: [BuildResults])
+			= map read contentss
+
+		print 	$ advanceResults swing baseline recent
+		
 	| otherwise
 	= usageError args "Nothing to do...\n"
 
