diff --git a/router/java/src/net/i2p/router/ClientTunnelSettings.java b/router/java/src/net/i2p/router/ClientTunnelSettings.java
index 110e2e94a5088f865ceca641c6c6388e7b9ccd8f..144bbd96bcce206877c605fbf56e0a535abe8190 100644
--- a/router/java/src/net/i2p/router/ClientTunnelSettings.java
+++ b/router/java/src/net/i2p/router/ClientTunnelSettings.java
@@ -22,8 +22,8 @@ public class ClientTunnelSettings {
     private final TunnelPoolSettings _outboundSettings;
     
     public ClientTunnelSettings(Hash dest) {
-        _inboundSettings = new TunnelPoolSettings(dest, false, true);
-        _outboundSettings = new TunnelPoolSettings(dest, false, false);
+        _inboundSettings = new TunnelPoolSettings(dest, true);
+        _outboundSettings = new TunnelPoolSettings(dest, false);
     }
     
     public TunnelPoolSettings getInboundSettings() { return _inboundSettings; }
diff --git a/router/java/src/net/i2p/router/TunnelPoolSettings.java b/router/java/src/net/i2p/router/TunnelPoolSettings.java
index 133c2600bf4f8fd0d8f674c795fa83678a62a1eb..f01a69476d97cb6ed7c41009fcd9b2306fb454b7 100644
--- a/router/java/src/net/i2p/router/TunnelPoolSettings.java
+++ b/router/java/src/net/i2p/router/TunnelPoolSettings.java
@@ -79,23 +79,33 @@ public class TunnelPoolSettings {
     private static final int MAX_PRIORITY = 25;
     private static final int EXPLORATORY_PRIORITY = 30;
     
-    public TunnelPoolSettings(Hash dest, boolean isExploratory, boolean isInbound) {
+    /**
+     *  Exploratory tunnel
+     */
+    public TunnelPoolSettings(boolean isInbound) {
+        this(null, isInbound);
+    }
+
+    /**
+     *  Client tunnel unless dest == null
+     */
+    public TunnelPoolSettings(Hash dest, boolean isInbound) {
         _destination = dest;
-        _isExploratory = isExploratory;
+        _isExploratory = dest == null;
         _isInbound = isInbound;
         _quantity = DEFAULT_QUANTITY;
         _backupQuantity = DEFAULT_BACKUP_QUANTITY;
         // _rebuildPeriod = DEFAULT_REBUILD_PERIOD;
         //_duration = DEFAULT_DURATION;
         if (isInbound) {
-            _length = isExploratory ? DEFAULT_IB_EXPL_LENGTH : DEFAULT_IB_LENGTH;
-            _lengthVariance = isExploratory ? DEFAULT_IB_EXPL_LENGTH_VARIANCE : DEFAULT_LENGTH_VARIANCE;
+            _length = _isExploratory ? DEFAULT_IB_EXPL_LENGTH : DEFAULT_IB_LENGTH;
+            _lengthVariance = _isExploratory ? DEFAULT_IB_EXPL_LENGTH_VARIANCE : DEFAULT_LENGTH_VARIANCE;
         } else {
-            _length = isExploratory ? DEFAULT_OB_EXPL_LENGTH : DEFAULT_OB_LENGTH;
-            _lengthVariance = isExploratory ? DEFAULT_OB_EXPL_LENGTH_VARIANCE : DEFAULT_LENGTH_VARIANCE;
+            _length = _isExploratory ? DEFAULT_OB_EXPL_LENGTH : DEFAULT_OB_LENGTH;
+            _lengthVariance = _isExploratory ? DEFAULT_OB_EXPL_LENGTH_VARIANCE : DEFAULT_LENGTH_VARIANCE;
         }
         _lengthOverride = -1;
-        if (isExploratory)
+        if (_isExploratory)
             _allowZeroHop = true;
         else
             _allowZeroHop = DEFAULT_ALLOW_ZERO_HOP;
@@ -189,7 +199,7 @@ public class TunnelPoolSettings {
     //public int getDuration() { return _duration; }
     //public void setDuration(int ms) { _duration = ms; }
     
-    /** what destination is this a tunnel for (or null if none) */
+    /** what destination is this a client tunnel for (or null if exploratory) */
     public Hash getDestination() { return _destination; }
 
     /** random key used for peer ordering */
diff --git a/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java b/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java
index 129caf23964c0769fbfb4232fb164f14a3a9bca2..9340477c6f4efb37d15e63ff17e3318cc9f20c57 100644
--- a/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java
+++ b/router/java/src/net/i2p/router/tunnel/TunnelCreatorConfig.java
@@ -114,7 +114,10 @@ public class TunnelCreatorConfig implements TunnelInfo {
     /** is this an inbound tunnel? */
     public boolean isInbound() { return _isInbound; }
 
-    /** if this is a client tunnel, what destination is it for? */
+    /**
+     *  If this is a client tunnel, what destination is it for?
+     *  @return null for exploratory
+     */
     public Hash getDestination() { return _destination; }
     
     public long getExpiration() { return _expiration; }
diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
index 6dcfa0af2357fd105bb002a0d308f8a8b02e1cd9..c559e140ce4c255c5d79a54e6cd551c76411374a 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
@@ -62,9 +62,9 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         _clientPeerSelector = new ClientPeerSelector(ctx);
 
         ExploratoryPeerSelector selector = new ExploratoryPeerSelector(_context);
-        TunnelPoolSettings inboundSettings = new TunnelPoolSettings(null, true, true);
+        TunnelPoolSettings inboundSettings = new TunnelPoolSettings(true);
         _inboundExploratory = new TunnelPool(_context, this, inboundSettings, selector);
-        TunnelPoolSettings outboundSettings = new TunnelPoolSettings(null, true, false);
+        TunnelPoolSettings outboundSettings = new TunnelPoolSettings(false);
         _outboundExploratory = new TunnelPool(_context, this, outboundSettings, selector);
         
         // threads will be started in startup()