diff --git a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java
index 86bf750..92d9583 100644
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/Start.java
@@ -580,6 +580,17 @@
             public void put(String name, String value) {
                 compOpts.put(name, value);
             }
+
+            @Override
+            public void remove(String name) {
+                compOpts.remove(name);
+            }
+
+            @Override
+            public boolean handleFileManagerOption(com.sun.tools.javac.main.Option option, String value) {
+                fileManagerOpts.put(option, value);
+               return true;
+            }
         };
     }
 }
diff --git a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java
index e84e659..7f70d9b 100644
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/main/ToolOption.java
@@ -51,92 +51,85 @@
 
     BOOTCLASSPATH("-bootclasspath", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.BOOT_CLASS_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.BOOT_CLASS_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     CLASSPATH("-classpath", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.CLASS_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.CLASS_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     CP("-cp", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.CLASS_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.CLASS_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     CLASS_PATH("--class-path", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.CLASS_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.CLASS_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     EXTDIRS("-extdirs", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.EXTDIRS, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.EXTDIRS.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     SOURCEPATH("-sourcepath", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.SOURCE_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.SOURCE_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     SOURCE_PATH("--source-path", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.SOURCE_PATH, arg);
-        }
-    },
-
-    SYSCLASSPATH("-sysclasspath", true) {
-        @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.BOOT_CLASS_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.SOURCE_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     MODULE_SOURCE_PATH("--module-source-path", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.MODULE_SOURCE_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.MODULE_SOURCE_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     UPGRADE_MODULE_PATH("--upgrade-module-path", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.UPGRADE_MODULE_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.UPGRADE_MODULE_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     SYSTEM_("--system", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.SYSTEM, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.SYSTEM.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     MODULE_PATH("--module-path", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.MODULE_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.MODULE_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     P("-p", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setFileManagerOpt(Option.MODULE_PATH, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.MODULE_PATH.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
@@ -156,37 +149,36 @@
 
     ENCODING("-encoding", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.encoding = arg;
-            helper.setCompilerOpt(opt, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.ENCODING.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     RELEASE("--release", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setCompilerOpt(opt, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.RELEASE.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     SOURCE("-source", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setCompilerOpt(opt, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.SOURCE.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     XMAXERRS("-Xmaxerrs", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setCompilerOpt(opt, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.XMAXERRS.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
     XMAXWARNS("-Xmaxwarns", true) {
         @Override
-        public void process(Helper helper, String arg) {
-            helper.setCompilerOpt(opt, arg);
+        public void process(Helper helper, String arg) throws InvalidValueException {
+            Option.XMAXWARNS.process(helper.getOptionHelper(), opt, arg);
         }
     },
 
