diff --git a/include/clang/Driver/Driver.h b/include/clang/Driver/Driver.h
index 896c844..33d17ef 100644
--- a/include/clang/Driver/Driver.h
+++ b/include/clang/Driver/Driver.h
@@ -37,12 +37,8 @@
 
   Diagnostic &Diags;
 
-  /// ParseArgStrings - Parse the given list of strings into an
-  /// ArgList.
-  ArgList *ParseArgStrings(const char **ArgBegin, const char **ArgEnd);
-
   // Diag - Forwarding function for diagnostics.
-  DiagnosticBuilder Diag(unsigned DiagID) {
+  DiagnosticBuilder Diag(unsigned DiagID) const {
     return Diags.Report(FullSourceLoc(), DiagID);
   }
 
@@ -123,19 +119,27 @@
   /// @name Driver Steps
   /// @{
 
-  /// BuildUniversalActions - Construct the list of actions to perform
-  /// for the given arguments, which may require a universal build.
-  ///
-  /// \param Args - The input arguments.
-  /// \param Actions - The list to store the resulting actions onto.
-  void BuildUniversalActions(ArgList &Args, ActionList &Actions);
+  /// ParseArgStrings - Parse the given list of strings into an
+  /// ArgList.
+  ArgList *ParseArgStrings(const char **ArgBegin, const char **ArgEnd);
 
   /// BuildActions - Construct the list of actions to perform for the
   /// given arguments, which are only done for a single architecture.
   ///
   /// \param Args - The input arguments.
   /// \param Actions - The list to store the resulting actions onto.
-  void BuildActions(ArgList &Args, ActionList &Actions);
+  void BuildActions(ArgList &Args, ActionList &Actions) const;
+
+  /// BuildUniversalActions - Construct the list of actions to perform
+  /// for the given arguments, which may require a universal build.
+  ///
+  /// \param Args - The input arguments.
+  /// \param Actions - The list to store the resulting actions onto.
+  void BuildUniversalActions(ArgList &Args, ActionList &Actions) const;
+
+  /// BuildJobs - Bind actions to concrete tools and translate
+  /// arguments to form the list of jobs to run.
+  Compilation *BuildJobs(const ArgList &Args, const ActionList &Actions) const;
 
   /// @}
   /// @name Helper Methods
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index ee8a649..cbd03a3 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -171,10 +171,7 @@
     return 0;
   }
 
-  
-  assert(0 && "FIXME: Implement");
-
-  return new Compilation();
+  return BuildJobs(*Args, Actions);
 }
 
 void Driver::PrintOptions(const ArgList &Args) const {
@@ -274,7 +271,7 @@
     PrintActions1(Args, *it, Ids);
 }
 
-void Driver::BuildUniversalActions(ArgList &Args, ActionList &Actions) {
+void Driver::BuildUniversalActions(ArgList &Args, ActionList &Actions) const {
   // Collect the list of architectures. Duplicates are allowed, but
   // should only be handled once (in the order seen).
   llvm::StringSet<> ArchNames;
@@ -348,7 +345,7 @@
   }
 }
 
-void Driver::BuildActions(ArgList &Args, ActionList &Actions) {
+void Driver::BuildActions(ArgList &Args, ActionList &Actions) const {
   // Start by constructing the list of inputs and their types.
 
   // Track the current user specified (-x) input. We also explicitly
@@ -566,6 +563,12 @@
   return 0;
 }
 
+Compilation *Driver::BuildJobs(const ArgList &Args, 
+                               const ActionList &Actions) const {
+  assert(0 && "FIXME: Implement");
+  return 0;
+}
+
 llvm::sys::Path Driver::GetFilePath(const char *Name) const {
   // FIXME: Implement.
   return llvm::sys::Path(Name);
