diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
index 600539a5c1150caef149f169ef3b144092d9aa18..b50d0d1953adf5b22c9e8e1a4dee250b543a63c3 100644
--- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
+++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
@@ -86,7 +86,7 @@ class ClientConnectionRunner {
     private ClientWriterRunner _writer;
     private Hash _destHashCache;
     /** are we, uh, dead */
-    private boolean _dead;
+    private volatile boolean _dead;
     /** For outbound traffic. true if i2cp.messageReliability = "none"; @since 0.8.1 */
     private boolean _dontSendMSM;
     private final AtomicInteger _messageId; // messageId counter
@@ -463,10 +463,10 @@ class ClientConnectionRunner {
     }
 
     private class Rerequest implements SimpleTimer.TimedEvent {
-        private LeaseSet _ls;
-        private long _expirationTime;
-        private Job _onCreate;
-        private Job _onFailed;
+        private final LeaseSet _ls;
+        private final long _expirationTime;
+        private final Job _onCreate;
+        private final Job _onFailed;
         public Rerequest(LeaseSet ls, long expirationTime, Job onCreate, Job onFailed) {
             _ls = ls;
             _expirationTime = expirationTime;
diff --git a/router/java/src/net/i2p/router/client/ClientListenerRunner.java b/router/java/src/net/i2p/router/client/ClientListenerRunner.java
index 5dc5c650686d47b7425e403614f3e2f4d0c7e848..9b169ca757b820fa648e1dd1a5d5ec98f5fcfbf3 100644
--- a/router/java/src/net/i2p/router/client/ClientListenerRunner.java
+++ b/router/java/src/net/i2p/router/client/ClientListenerRunner.java
@@ -31,8 +31,8 @@ class ClientListenerRunner implements Runnable {
     protected ServerSocket _socket;
     protected final int _port;
     protected final boolean _bindAllInterfaces;
-    protected boolean _running;
-    protected boolean _listening;
+    protected volatile boolean _running;
+    protected volatile boolean _listening;
     
     public static final String BIND_ALL_INTERFACES = "i2cp.tcp.bindAllInterfaces";
 
diff --git a/router/java/src/net/i2p/router/client/ClientManager.java b/router/java/src/net/i2p/router/client/ClientManager.java
index 681527ae3a0ee833c52b88178b1f2dca2470319d..da55abe2713dfa79137b70b797a461754f16be41 100644
--- a/router/java/src/net/i2p/router/client/ClientManager.java
+++ b/router/java/src/net/i2p/router/client/ClientManager.java
@@ -45,7 +45,7 @@ class ClientManager {
     private final HashMap<Destination, ClientConnectionRunner>  _runners;        // Destination --> ClientConnectionRunner
     private final Set<ClientConnectionRunner> _pendingRunners; // ClientConnectionRunner for clients w/out a Dest yet
     private final RouterContext _ctx;
-    private boolean _isStarted;
+    private volatile boolean _isStarted;
 
     /** Disable external interface, allow internal clients only @since 0.8.3 */
     private static final String PROP_DISABLE_EXTERNAL = "i2cp.disableInterface";
diff --git a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java
index 022326cb6d263b9e8be097bbc8ec1119cf31e819..5045c6c8b3dd2745fb70585260832ae9806c7ec0 100644
--- a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java
+++ b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java
@@ -38,7 +38,7 @@ import net.i2p.util.Log;
 public class ClientManagerFacadeImpl extends ClientManagerFacade implements InternalClientManager {
     private final Log _log;
     private ClientManager _manager; 
-    private RouterContext _context;
+    private final RouterContext _context;
     /** note that this is different than the property the client side uses, i2cp.tcp.port */
     public final static String PROP_CLIENT_PORT = "i2cp.port";
     public final static int DEFAULT_PORT = 7654;
diff --git a/router/java/src/net/i2p/router/client/ClientWriterRunner.java b/router/java/src/net/i2p/router/client/ClientWriterRunner.java
index 86c391ee49538e37dd34d403809c88032b0d3eaf..759e1ef21a14fe7644c97aec8e47af3a094af4e7 100644
--- a/router/java/src/net/i2p/router/client/ClientWriterRunner.java
+++ b/router/java/src/net/i2p/router/client/ClientWriterRunner.java
@@ -17,10 +17,10 @@ import net.i2p.util.Log;
  * @author zzz modded to use concurrent
  */
 class ClientWriterRunner implements Runnable {
-    private BlockingQueue<I2CPMessage> _messagesToWrite;
-    private ClientConnectionRunner _runner;
-    private Log _log;
-    private long _id;
+    private final BlockingQueue<I2CPMessage> _messagesToWrite;
+    private final ClientConnectionRunner _runner;
+    private final Log _log;
+    private final long _id;
     private static long __id = 0;
     
     public ClientWriterRunner(RouterContext context, ClientConnectionRunner runner) {
diff --git a/router/java/src/net/i2p/router/client/CreateSessionJob.java b/router/java/src/net/i2p/router/client/CreateSessionJob.java
index 0ee1f177f7dc5e9b434c8998d1bec54cb212f4a9..5b0c103b122b663e351f37791a3c1947d7ab563b 100644
--- a/router/java/src/net/i2p/router/client/CreateSessionJob.java
+++ b/router/java/src/net/i2p/router/client/CreateSessionJob.java
@@ -24,8 +24,8 @@ import net.i2p.util.Log;
  *
  */
 class CreateSessionJob extends JobImpl {
-    private Log _log;
-    private ClientConnectionRunner _runner;
+    private final Log _log;
+    private final ClientConnectionRunner _runner;
     
     public CreateSessionJob(RouterContext context, ClientConnectionRunner runner) {
         super(context);
diff --git a/router/java/src/net/i2p/router/client/LeaseRequestState.java b/router/java/src/net/i2p/router/client/LeaseRequestState.java
index 7e2a248ac948481129ceedd6890755f6f22b33ec..50f4003ca1c9a36d93ce8dbbe5990fee2af0ee73 100644
--- a/router/java/src/net/i2p/router/client/LeaseRequestState.java
+++ b/router/java/src/net/i2p/router/client/LeaseRequestState.java
@@ -20,12 +20,12 @@ import net.i2p.router.Job;
  */
 class LeaseRequestState {
     private LeaseSet _grantedLeaseSet;
-    private LeaseSet _requestedLeaseSet;
-    private PrivateKey _leaseSetPrivateKey;
-    private SigningPrivateKey _leaseSetSigningPrivateKey;
-    private Job _onGranted;
-    private Job _onFailed;
-    private long _expiration;
+    private final LeaseSet _requestedLeaseSet;
+    //private PrivateKey _leaseSetPrivateKey;
+    //private SigningPrivateKey _leaseSetSigningPrivateKey;
+    private final Job _onGranted;
+    private final Job _onFailed;
+    private final long _expiration;
     private boolean _successful;
 
     public LeaseRequestState(Job onGranted, Job onFailed, long expiration, LeaseSet requested) {
@@ -35,26 +35,34 @@ class LeaseRequestState {
         _requestedLeaseSet = requested;
     }
     
-    /** created lease set from client */
+    /** created lease set from client - FIXME always null */
     public LeaseSet getGranted() { return _grantedLeaseSet; }
+    /** FIXME unused - why? */
     public void setGranted(LeaseSet ls) { _grantedLeaseSet = ls; }
+
     /** lease set that is being requested */
     public LeaseSet getRequested() { return _requestedLeaseSet; }
-    public void setRequested(LeaseSet ls) { _requestedLeaseSet = ls; }
+    //public void setRequested(LeaseSet ls) { _requestedLeaseSet = ls; }
+
     /** the private encryption key received regarding the lease set */
-    public PrivateKey getPrivateKey() { return _leaseSetPrivateKey; }
-    public void getPrivateKey(PrivateKey pk) { _leaseSetPrivateKey = pk; }
+    //public PrivateKey getPrivateKey() { return _leaseSetPrivateKey; }
+    //public void setPrivateKey(PrivateKey pk) { _leaseSetPrivateKey = pk; }
+
     /** the private signing key received regarding the lease set (for revocation) */
-    public SigningPrivateKey getSigningPrivateKey() { return _leaseSetSigningPrivateKey; }
-    public void getSigningPrivateKey(SigningPrivateKey spk) { _leaseSetSigningPrivateKey = spk; }
+    //public SigningPrivateKey getSigningPrivateKey() { return _leaseSetSigningPrivateKey; }
+    //public void setSigningPrivateKey(SigningPrivateKey spk) { _leaseSetSigningPrivateKey = spk; }
+
     /** what to do once the lease set is created */    
     public Job getOnGranted() { return _onGranted; }
-    public void setOnGranted(Job jb) { _onGranted = jb; }
+    //public void setOnGranted(Job jb) { _onGranted = jb; }
+
     /** what to do if the lease set create fails / times out */
     public Job getOnFailed() { return _onFailed; }
-    public void setOnFailed(Job jb) { _onFailed = jb; }
+    //public void setOnFailed(Job jb) { _onFailed = jb; }
+
     /** when the request for the lease set expires */
     public long getExpiration() { return _expiration; }
+
     /** whether the request was successful in the time allotted */
     public boolean getIsSuccessful() { return _successful; }
     public void setIsSuccessful(boolean is) { _successful = is; }
diff --git a/router/java/src/net/i2p/router/client/LookupDestJob.java b/router/java/src/net/i2p/router/client/LookupDestJob.java
index 7db546e91a11489fbe951781eb9c9e8451d36a4f..017401569a0346c5cdeb762ec9b7d4289d44bc6a 100644
--- a/router/java/src/net/i2p/router/client/LookupDestJob.java
+++ b/router/java/src/net/i2p/router/client/LookupDestJob.java
@@ -16,8 +16,8 @@ import net.i2p.router.RouterContext;
  * Look up the lease of a hash, to convert it to a Destination for the client
  */
 class LookupDestJob extends JobImpl {
-    private ClientConnectionRunner _runner;
-    private Hash _hash;
+    private final ClientConnectionRunner _runner;
+    private final Hash _hash;
 
     public LookupDestJob(RouterContext context, ClientConnectionRunner runner, Hash h) {
         super(context);
diff --git a/router/java/src/net/i2p/router/client/MessageReceivedJob.java b/router/java/src/net/i2p/router/client/MessageReceivedJob.java
index 843ebfaceacf7b276840ca95acce2cb566069866..92d4cb5355042d16110d246c84fab2403a7fde85 100644
--- a/router/java/src/net/i2p/router/client/MessageReceivedJob.java
+++ b/router/java/src/net/i2p/router/client/MessageReceivedJob.java
@@ -22,9 +22,9 @@ import net.i2p.util.Log;
  *
  */
 class MessageReceivedJob extends JobImpl {
-    private Log _log;
-    private ClientConnectionRunner _runner;
-    private Payload _payload;
+    private final Log _log;
+    private final ClientConnectionRunner _runner;
+    private final Payload _payload;
     public MessageReceivedJob(RouterContext ctx, ClientConnectionRunner runner, Destination toDest, Destination fromDest, Payload payload) {
         super(ctx);
         _log = ctx.logManager().getLog(MessageReceivedJob.class);
diff --git a/router/java/src/net/i2p/router/client/ReportAbuseJob.java b/router/java/src/net/i2p/router/client/ReportAbuseJob.java
index abf57e2152e0ba0f751d14c3050a260474375939..8dd36ac3cad98fb19261f39a63696d5f0372be6f 100644
--- a/router/java/src/net/i2p/router/client/ReportAbuseJob.java
+++ b/router/java/src/net/i2p/router/client/ReportAbuseJob.java
@@ -21,10 +21,10 @@ import net.i2p.util.Log;
  *
  */
 class ReportAbuseJob extends JobImpl {
-    private Log _log;
-    private ClientConnectionRunner _runner;
-    private String _reason;
-    private int _severity;
+    private final Log _log;
+    private final ClientConnectionRunner _runner;
+    private final String _reason;
+    private final int _severity;
     public ReportAbuseJob(RouterContext context, ClientConnectionRunner runner, String reason, int severity) {
         super(context);
         _log = context.logManager().getLog(ReportAbuseJob.class);