diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java
index b568046f6d4433b4a9a00363a8c4a12e46375ab7..24560b3af92f17ce10b57b3e37d8794df7f9f382 100644
--- a/router/java/src/net/i2p/router/Router.java
+++ b/router/java/src/net/i2p/router/Router.java
@@ -345,6 +345,8 @@ public class Router implements RouterClock.ClockShiftListener {
      */
     public void removeConfigSetting(String name) { 
             _config.remove(name); 
+            // remove the backing default also
+            _context.removeProperty(name);
     }
 
     /**
@@ -1279,7 +1281,7 @@ public class Router implements RouterClock.ClockShiftListener {
         if (value != null)
             _config.put(name, value);
         else
-            _config.remove(name);
+            removeConfigSetting(name);
         return saveConfig();
     }
 
@@ -1298,7 +1300,7 @@ public class Router implements RouterClock.ClockShiftListener {
             _config.putAll(toAdd);
         if (toRemove != null) {
             for (String s : toRemove) {
-                _config.remove(s);
+                removeConfigSetting(s);
             }
         }
         return saveConfig();
diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java
index 5c5b4a2cab38781b07da8a802df8faee95411579..0debc4ff11978c861d44bc781c0d3b28717904d9 100644
--- a/router/java/src/net/i2p/router/RouterContext.java
+++ b/router/java/src/net/i2p/router/RouterContext.java
@@ -113,12 +113,26 @@ public class RouterContext extends I2PAppContext {
     /**
      * Modify the configuration attributes of this context, changing
      * one of the properties provided during the context construction.
+     *
      * @param propName The name of the property.
      * @param value The new value for the property.
+     * @since 0.8.4
+     * @deprecated Use Router.saveConfig()
      */
     public void setProperty(String propName, String value) {
     		_overrideProps.setProperty(propName, value);
     }
+    
+    /**
+     * Remove a property provided during the context construction.
+     * Only for use by the router. Others use Router.saveConfig()
+     *
+     * @param propName The name of the property.
+     * @since 0.9
+     */
+    void removeProperty(String propName) {
+        _overrideProps.remove(propName);
+    }
 
     
     public void addPropertyCallback(I2PPropertyCallback callback) {