diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelStrategyModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelStrategyModule.java
index e309103..b5236a2 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelStrategyModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelStrategyModule.java
@@ -18,6 +18,7 @@
 import com.google.devtools.build.lib.analysis.actions.FileWriteActionContext;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionContext;
 import com.google.devtools.build.lib.buildtool.BuildRequest;
+import com.google.devtools.build.lib.exec.ExecutionOptions;
 import com.google.devtools.build.lib.exec.ExecutorBuilder;
 import com.google.devtools.build.lib.exec.SpawnCache;
 import com.google.devtools.build.lib.rules.android.WriteAdbArgsActionContext;
@@ -28,91 +29,22 @@
 import com.google.devtools.build.lib.runtime.Command;
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
 import com.google.devtools.build.lib.util.RegexFilter;
-import com.google.devtools.common.options.Converters.AssignmentConverter;
-import com.google.devtools.common.options.Option;
-import com.google.devtools.common.options.OptionDocumentationCategory;
-import com.google.devtools.common.options.OptionEffectTag;
 import com.google.devtools.common.options.OptionsBase;
-import java.util.List;
 import java.util.Map;
 
 /** Module which registers the strategy options for Bazel. */
 public class BazelStrategyModule extends BlazeModule {
-  /**
-   * Execution options affecting how we execute the build actions (but not their semantics).
-   */
-  public static class BazelExecutionOptions extends OptionsBase {
-    @Option(
-      name = "spawn_strategy",
-      defaultValue = "",
-      documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
-      effectTags = {OptionEffectTag.UNKNOWN},
-      help =
-          "Specify how spawn actions are executed by default. "
-              + "'standalone' means run all of them locally without any kind of sandboxing. "
-              + "'sandboxed' means to run them in a sandboxed environment with limited privileges "
-              + "(details depend on platform support)."
-    )
-    public String spawnStrategy;
-
-    @Option(
-        name = "genrule_strategy",
-        defaultValue = "",
-        documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
-        effectTags = {OptionEffectTag.UNKNOWN},
-        help =
-            "Specify how to execute genrules. This flag will be phased out. Instead, use "
-                + "--spawn_strategy=<value> to control all actions or --strategy=Genrule=<value> "
-                + "to control genrules only.")
-    public String genruleStrategy;
-
-    @Option(
-      name = "strategy",
-      allowMultiple = true,
-      converter = AssignmentConverter.class,
-      defaultValue = "",
-      documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
-      effectTags = {OptionEffectTag.UNKNOWN},
-      help =
-          "Specify how to distribute compilation of other spawn actions. "
-              + "Example: 'Javac=local' means to spawn Java compilation locally. "
-              + "'JavaIjar=sandboxed' means to spawn Java Ijar actions in a sandbox. "
-    )
-    public List<Map.Entry<String, String>> strategy;
-
-    @Option(
-        name = "strategy_regexp",
-        allowMultiple = true,
-        converter = RegexFilterAssignmentConverter.class,
-        documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
-        effectTags = {OptionEffectTag.UNKNOWN},
-        defaultValue = "",
-        help =
-            "Override which spawn strategy should be used to execute spawn actions that have "
-                + "descriptions matching a certain regex_filter. See --per_file_copt for details on"
-                + "regex_filter matching. "
-                + "The first regex_filter that matches the description is used. "
-                + "This option overrides other flags for specifying strategy. "
-                + "Example: --strategy_regexp=//foo.*\\.cc,-//foo/bar=local means to run actions "
-                + "using local strategy if their descriptions match //foo.*.cc but not //foo/bar. "
-                + "Example: --strategy_regexp='Compiling.*/bar=local "
-                + " --strategy_regexp=Compiling=sandboxed will run 'Compiling //foo/bar/baz' with "
-                + "the 'local' strategy, but reversing the order would run it with 'sandboxed'. "
-    )
-    public List<Map.Entry<RegexFilter, String>> strategyByRegexp;
-  }
-
   @Override
   public Iterable<Class<? extends OptionsBase>> getCommandOptions(Command command) {
     return "build".equals(command.name())
-        ? ImmutableList.<Class<? extends OptionsBase>>of(BazelExecutionOptions.class)
-        : ImmutableList.<Class<? extends OptionsBase>>of();
+        ? ImmutableList.of(ExecutionOptions.class)
+        : ImmutableList.of();
   }
 
   @Override
   public void executorInit(CommandEnvironment env, BuildRequest request, ExecutorBuilder builder) {
     builder.addActionContext(new WriteAdbArgsActionContext(env.getClientEnv().get("HOME")));
-    BazelExecutionOptions options = env.getOptions().getOptions(BazelExecutionOptions.class);
+    ExecutionOptions options = env.getOptions().getOptions(ExecutionOptions.class);
 
     // Default strategies for certain mnemonics - they can be overridden by --strategy= flags.
     builder.addStrategyByMnemonic("Javac", "worker");
diff --git a/src/main/java/com/google/devtools/build/lib/exec/ExecutionOptions.java b/src/main/java/com/google/devtools/build/lib/exec/ExecutionOptions.java
index e0d9c33..1919b25 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/ExecutionOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/ExecutionOptions.java
@@ -22,6 +22,7 @@
 import com.google.devtools.build.lib.util.ResourceConverter;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.common.options.BoolOrEnumConverter;
+import com.google.devtools.common.options.Converters.AssignmentConverter;
 import com.google.devtools.common.options.Option;
 import com.google.devtools.common.options.OptionDocumentationCategory;
 import com.google.devtools.common.options.OptionEffectTag;
@@ -30,6 +31,7 @@
 import com.google.devtools.common.options.OptionsParsingException;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Options affecting the execution phase of a build.
@@ -52,6 +54,62 @@
   public static final ExecutionOptions DEFAULTS = Options.getDefaults(ExecutionOptions.class);
 
   @Option(
+      name = "spawn_strategy",
+      defaultValue = "",
+      documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+      effectTags = {OptionEffectTag.UNKNOWN},
+      help =
+          "Specify how spawn actions are executed by default. "
+              + "'standalone' means run all of them locally without any kind of sandboxing. "
+              + "'sandboxed' means to run them in a sandboxed environment with limited privileges "
+              + "(details depend on platform support).")
+  public String spawnStrategy;
+
+  @Option(
+      name = "genrule_strategy",
+      defaultValue = "",
+      documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+      effectTags = {OptionEffectTag.UNKNOWN},
+      help =
+          "Specify how to execute genrules. This flag will be phased out. Instead, use "
+              + "--spawn_strategy=<value> to control all actions or --strategy=Genrule=<value> "
+              + "to control genrules only.")
+  public String genruleStrategy;
+
+  @Option(
+      name = "strategy",
+      allowMultiple = true,
+      converter = AssignmentConverter.class,
+      defaultValue = "",
+      documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+      effectTags = {OptionEffectTag.UNKNOWN},
+      help =
+          "Specify how to distribute compilation of other spawn actions. "
+              + "Example: 'Javac=local' means to spawn Java compilation locally. "
+              + "'JavaIjar=sandboxed' means to spawn Java Ijar actions in a sandbox. ")
+  public List<Map.Entry<String, String>> strategy;
+
+  @Option(
+      name = "strategy_regexp",
+      allowMultiple = true,
+      converter = RegexFilterAssignmentConverter.class,
+      documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+      effectTags = {OptionEffectTag.UNKNOWN},
+      defaultValue = "",
+      help =
+          "Override which spawn strategy should be used to execute spawn actions that have "
+              + "descriptions matching a certain regex_filter. See --per_file_copt for details on"
+              + "regex_filter matching. "
+              + "The first regex_filter that matches the description is used. "
+              + "This option overrides other flags for specifying strategy. "
+              + "Example: --strategy_regexp=//foo.*\\.cc,-//foo/bar=local means to run actions "
+              + "using local strategy if their descriptions match //foo.*.cc but not //foo/bar. "
+              + "Example: --strategy_regexp='Compiling.*/bar=local "
+              + " --strategy_regexp=Compiling=sandboxed will run 'Compiling //foo/bar/baz' with "
+              + "the 'local' strategy, but reversing the order would run it with 'sandboxed'. ")
+  public List<Map.Entry<RegexFilter, String>> strategyByRegexp;
+
+  @Option(
       name = "materialize_param_files",
       defaultValue = "false",
       documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/RegexFilterAssignmentConverter.java b/src/main/java/com/google/devtools/build/lib/exec/RegexFilterAssignmentConverter.java
similarity index 96%
rename from src/main/java/com/google/devtools/build/lib/bazel/rules/RegexFilterAssignmentConverter.java
rename to src/main/java/com/google/devtools/build/lib/exec/RegexFilterAssignmentConverter.java
index f7c97f8..65b60b4 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/RegexFilterAssignmentConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/RegexFilterAssignmentConverter.java
@@ -11,7 +11,7 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-package com.google.devtools.build.lib.bazel.rules;
+package com.google.devtools.build.lib.exec;
 
 import com.google.common.collect.Maps;
 import com.google.devtools.build.lib.util.RegexFilter;
