diff --git a/router/java/src/net/i2p/data/router/RouterAddress.java b/router/java/src/net/i2p/data/router/RouterAddress.java
index d9ff333c4be044d45cf9cb42241711bf7b05c661..3542aeab3e29103e0387d74efebeb201d1af5320 100644
--- a/router/java/src/net/i2p/data/router/RouterAddress.java
+++ b/router/java/src/net/i2p/data/router/RouterAddress.java
@@ -146,7 +146,10 @@ public class RouterAddress extends DataStructureImpl {
      */
     @Deprecated
     public void setExpiration(Date expiration) {
-        _expiration = expiration.getDate();
+        if (expiration != null)
+            _expiration = expiration.getDate();
+        else
+            _expiration = 0;
     }
 
     /**
diff --git a/router/java/test/junit/net/i2p/data/i2np/DeliveryInstructionsTest.java b/router/java/test/junit/net/i2p/data/i2np/DeliveryInstructionsTest.java
index fefc308809fb33d732548b59e2ba37defc7a31d5..c55fba00b12e6bd13a653dcd24a92aeacde7a830 100644
--- a/router/java/test/junit/net/i2p/data/i2np/DeliveryInstructionsTest.java
+++ b/router/java/test/junit/net/i2p/data/i2np/DeliveryInstructionsTest.java
@@ -22,8 +22,8 @@ import net.i2p.data.TunnelId;
 public class DeliveryInstructionsTest extends StructureTest {
     public DataStructure createDataStructure() throws DataFormatException {
         DeliveryInstructions instructions = new DeliveryInstructions();
-		instructions.setDelayRequested(true);
-		instructions.setDelaySeconds(42);
+		//instructions.setDelayRequested(true);
+		//instructions.setDelaySeconds(42);
 		instructions.setDeliveryMode(DeliveryInstructions.DELIVERY_MODE_TUNNEL);
                 // encryption key read/write disabled
 		//instructions.setEncrypted(true);
diff --git a/router/java/test/junit/net/i2p/data/router/RouterAddressTest.java b/router/java/test/junit/net/i2p/data/router/RouterAddressTest.java
index 090f7f4704a9f98ca49948c8d02bb3abce2d3479..03c7c93b00c2a0705c8570fd503054b03a5cd93e 100644
--- a/router/java/test/junit/net/i2p/data/router/RouterAddressTest.java
+++ b/router/java/test/junit/net/i2p/data/router/RouterAddressTest.java
@@ -14,6 +14,7 @@ import java.util.Properties;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.DataStructure;
 import net.i2p.data.StructureTest;
+import net.i2p.util.OrderedProperties;
 
 /**
  * Test harness for loading / storing Hash objects
@@ -22,21 +23,16 @@ import net.i2p.data.StructureTest;
  */
 public class RouterAddressTest extends StructureTest {
     public DataStructure createDataStructure() throws DataFormatException {
-        RouterAddress addr = new RouterAddress();
-        byte data[] = new byte[32];
-        for (int i = 0; i < data.length; i++)
-            data[i] = (byte)(i%16);
-        addr.setCost(42);
         //addr.setExpiration(new Date(1000*60*60*24)); // jan 2 1970
-        Properties options = new Properties();
+        OrderedProperties options = new OrderedProperties();
         options.setProperty("hostname", "localhost");
         options.setProperty("portnum", "1234");
-        addr.setOptions(options);
-        addr.setTransportStyle("Blah");
+        RouterAddress addr = new RouterAddress("Blah", options, 42);
         return addr; 
     }
     public DataStructure createStructureToRead() { return new RouterAddress(); }
 
+    @SuppressWarnings("deprecation")
     public void testSetNullOptions(){
         RouterAddress addr = new RouterAddress();
         boolean error = false;
@@ -48,12 +44,12 @@ public class RouterAddressTest extends StructureTest {
         assertTrue(error);
     }
 
+    @SuppressWarnings("deprecation")
     public void testSetOptionsAgain(){
-        RouterAddress addr = new RouterAddress();
-        Properties options = new Properties();
+        OrderedProperties options = new OrderedProperties();
         options.setProperty("hostname", "localhost");
         options.setProperty("portnum", "1234");
-        addr.setOptions(options);
+        RouterAddress addr = new RouterAddress("Blah", options, 42);
         options.setProperty("portnum", "2345");
         boolean error = false;
         try{
@@ -76,33 +72,21 @@ public class RouterAddressTest extends StructureTest {
     }
 
     public void testNullEquals(){
-        RouterAddress addr = new RouterAddress();
-        byte data[] = new byte[32];
-        for (int i = 0; i < data.length; i++)
-            data[i] = (byte)(i%16);
-        addr.setCost(42);
         //addr.setExpiration(new Date(1000*60*60*24)); // jan 2 1970
-        Properties options = new Properties();
+        OrderedProperties options = new OrderedProperties();
         options.setProperty("hostname", "localhost");
         options.setProperty("portnum", "1234");
-        addr.setOptions(options);
-        addr.setTransportStyle("Blah");
+        RouterAddress addr = new RouterAddress("Blah", options, 42);
         assertFalse(addr.equals(null));
         assertFalse(addr.equals(""));
     }
 
     public void testToString(){
-        RouterAddress addr = new RouterAddress();
-        byte data[] = new byte[32];
-        for (int i = 0; i < data.length; i++)
-            data[i] = (byte)(i%16);
-        addr.setCost(42);
         //addr.setExpiration(new Date(1000*60*60*24)); // jan 2 1970
-        Properties options = new Properties();
+        OrderedProperties options = new OrderedProperties();
         options.setProperty("hostname", "localhost");
         options.setProperty("portnum", "1234");
-        addr.setOptions(options);
-        addr.setTransportStyle("Blah");
+        RouterAddress addr = new RouterAddress("Blah", options, 42);
         String ret = addr.toString();
         //assertEquals("[RouterAddress: \n\tTransportStyle: Blah\n\tCost: 42\n\tExpiration: Fri Jan 02 00:00:00 UTC 1970\n\tOptions: #: 2\n\t\t[hostname] = [localhost]\n\t\t[portnum] = [1234]]", ret);
         assertEquals("[RouterAddress: \n\tType: Blah\n\tCost: 42\n\tOptions (2):\n\t\t[hostname] = [localhost]\n\t\t[portnum] = [1234]]", ret);
diff --git a/router/java/test/junit/net/i2p/data/router/RouterInfoTest.java b/router/java/test/junit/net/i2p/data/router/RouterInfoTest.java
index daf89cda3c02119ceccd5c41961264eea53e07c6..9d6d780b160934439132b99705250438f2fc13ce 100644
--- a/router/java/test/junit/net/i2p/data/router/RouterInfoTest.java
+++ b/router/java/test/junit/net/i2p/data/router/RouterInfoTest.java
@@ -31,6 +31,8 @@ import net.i2p.util.Log;
  */
 public class RouterInfoTest extends StructureTest {
     private final static Log _log = new Log(RouterInfoTest.class);
+
+    @SuppressWarnings("deprecation")
     public DataStructure createDataStructure() throws DataFormatException {
         RouterInfo info = new RouterInfo();
         HashSet<RouterAddress> addresses = new HashSet<RouterAddress>();
diff --git a/router/java/test/junit/net/i2p/router/SSUDemo.java b/router/java/test/junit/net/i2p/router/SSUDemo.java
index 2c94f9ba8b30515845fb8756cb6b62bea76b4630..485529d229f95456445a8635294eb5b822508528 100644
--- a/router/java/test/junit/net/i2p/router/SSUDemo.java
+++ b/router/java/test/junit/net/i2p/router/SSUDemo.java
@@ -219,6 +219,7 @@ public class SSUDemo {
      * Deal with an Foo message received
      */
     private class FooJobBuilder implements HandlerJobBuilder {
+        @SuppressWarnings("deprecation")
         public FooJobBuilder() {
             I2NPMessageImpl.registerBuilder(new FooBuilder(), FooMessage.MESSAGE_TYPE);
         }
diff --git a/router/java/test/junit/net/i2p/router/crypto/SessionEncryptionTest.java b/router/java/test/junit/net/i2p/router/crypto/SessionEncryptionTest.java
index 9f2b04180638b47d9ae5d7bdb23be5f4622c309f..392cbdd1b64ab5b9d9cb5bb0992ec3d319dd85df 100644
--- a/router/java/test/junit/net/i2p/router/crypto/SessionEncryptionTest.java
+++ b/router/java/test/junit/net/i2p/router/crypto/SessionEncryptionTest.java
@@ -48,7 +48,7 @@ public class SessionEncryptionTest extends TestCase{
         
         byte[] msg = DataHelper.getASCII("msg 1");
         
-        byte emsg[] = _context.elGamalAESEngine().encrypt(msg, pubKey, curKey, 64);
+        byte emsg[] = _context.elGamalAESEngine().encrypt(msg, pubKey, curKey, null, null, 64);
         byte dmsg[] = _context.elGamalAESEngine().decrypt(emsg, privKey, skm);
         assertTrue(DataHelper.eq(dmsg, msg));
     }
@@ -62,7 +62,7 @@ public class SessionEncryptionTest extends TestCase{
         
         byte[] msg = DataHelper.getASCII("msg 2");
         
-        byte emsg[] = _context.elGamalAESEngine().encrypt(msg, pubKey, curKey, 64);
+        byte emsg[] = _context.elGamalAESEngine().encrypt(msg, pubKey, curKey, null, null, 64);
         byte dmsg[] = _context.elGamalAESEngine().decrypt(emsg, privKey, skm);
         assertTrue(DataHelper.eq(dmsg, msg));
     }
@@ -101,7 +101,7 @@ public class SessionEncryptionTest extends TestCase{
         byte[] msg4 = DataHelper.getASCII("msg 4");
         byte[] msg5 = DataHelper.getASCII("msg 5");
         
-        byte emsg1[] = _context.elGamalAESEngine().encrypt(msg1, pubKey, curKey, firstTags, 64);
+        byte emsg1[] = _context.elGamalAESEngine().encrypt(msg1, pubKey, curKey, firstTags, null, 64);
         
         byte dmsg1[] = _context.elGamalAESEngine().decrypt(emsg1, privKey, skm);
         assertTrue(DataHelper.eq(dmsg1, msg1));
@@ -201,7 +201,7 @@ public class SessionEncryptionTest extends TestCase{
         byte[] msg4 = DataHelper.getASCII("msg 4");
         byte[] msg5 = DataHelper.getASCII("msg 5");
         
-        byte emsg1[] = _context.elGamalAESEngine().encrypt(msg1, pubKey, curKey, firstTags, 64);
+        byte emsg1[] = _context.elGamalAESEngine().encrypt(msg1, pubKey, curKey, firstTags, null, 64);
         
         byte dmsg1[] = _context.elGamalAESEngine().decrypt(emsg1, privKey, skm);
         assertTrue(DataHelper.eq(dmsg1, msg1));
diff --git a/router/java/test/junit/net/i2p/router/message/BuildTestMessageJob.java b/router/java/test/junit/net/i2p/router/message/BuildTestMessageJob.java
index f8c4e13dfc776b771992e7d0ced69fc048f308eb..cf233628bf7e544c46f44126d4a9d11847cfd8dc 100644
--- a/router/java/test/junit/net/i2p/router/message/BuildTestMessageJob.java
+++ b/router/java/test/junit/net/i2p/router/message/BuildTestMessageJob.java
@@ -110,10 +110,6 @@ public class BuildTestMessageJob extends JobImpl {
         
         DeliveryInstructions instructions = new DeliveryInstructions();
         instructions.setDeliveryMode(DeliveryInstructions.DELIVERY_MODE_ROUTER);
-        instructions.setDelayRequested(false);
-        instructions.setDelaySeconds(0);
-        instructions.setEncrypted(false);
-        instructions.setEncryptionKey(null);
         instructions.setRouter(_target.getIdentity().getHash());
         instructions.setTunnelId(null);
         
@@ -135,9 +131,6 @@ public class BuildTestMessageJob extends JobImpl {
         DeliveryInstructions ackInstructions = new DeliveryInstructions();
         ackInstructions.setDeliveryMode(DeliveryInstructions.DELIVERY_MODE_ROUTER);
         ackInstructions.setRouter(_replyTo); // yikes!
-        ackInstructions.setDelayRequested(false);
-        ackInstructions.setDelaySeconds(0);
-        ackInstructions.setEncrypted(false);
         
         DeliveryStatusMessage msg = new DeliveryStatusMessage(getContext());
         msg.setArrival(getContext().clock().now());
diff --git a/router/java/test/junit/net/i2p/router/networkdb/kademlia/RouterGenerator.java b/router/java/test/junit/net/i2p/router/networkdb/kademlia/RouterGenerator.java
index 22a4995f9dd0e9e4a9225af476f8d03554c9f219..d8a78ea46983092fbf6c6762ea5f662eb77abd6d 100644
--- a/router/java/test/junit/net/i2p/router/networkdb/kademlia/RouterGenerator.java
+++ b/router/java/test/junit/net/i2p/router/networkdb/kademlia/RouterGenerator.java
@@ -25,6 +25,7 @@ import net.i2p.data.router.RouterInfo;
 import net.i2p.data.SigningPrivateKey;
 import net.i2p.data.SigningPublicKey;
 import net.i2p.util.Clock;
+import net.i2p.util.OrderedProperties;
 
 public class RouterGenerator {
     public static void main(String args[]) {
@@ -121,16 +122,12 @@ public class RouterGenerator {
     }
     
     private static RouterAddress createTCPAddress(int num) {
-	RouterAddress addr = new RouterAddress();
-	addr.setCost(10);
-	addr.setExpiration(null);
-	Properties props = new Properties();
+	OrderedProperties props = new OrderedProperties();
 	String name = "blah.random.host.org";
 	String port = "" + (1024+num);
 	props.setProperty("host", name);
 	props.setProperty("port", port);
-	addr.setOptions(props);
-	addr.setTransportStyle("TCP");
+	RouterAddress addr = new RouterAddress("TCP", props, 10);
 	return addr;
     }
     
diff --git a/router/java/test/junit/net/i2p/router/transport/udp/UDPFlooder.java b/router/java/test/junit/net/i2p/router/transport/udp/UDPFlooder.java
index 1625c3fe1238e9f224afbc81c87e5f40e2e9fb28..dd546639bfaca7a04e15765bd22b4911a50f447d 100644
--- a/router/java/test/junit/net/i2p/router/transport/udp/UDPFlooder.java
+++ b/router/java/test/junit/net/i2p/router/transport/udp/UDPFlooder.java
@@ -75,7 +75,7 @@ class UDPFlooder implements Runnable {
             if (now >= nextSend) {
                 // peers always grows, so this is fairly safe
                 for (int i = 0; i < _peers.size(); i++) {
-                    PeerState peer = (PeerState)_peers.get(i);
+                    PeerState peer = _peers.get(i);
                     DataMessage m = new DataMessage(_context);
                     byte data[] = _floodData; // new byte[4096];
                     //_context.random().nextBytes(data);
diff --git a/router/java/test/junit/net/i2p/router/tunnel/BatchedFragmentTest.java b/router/java/test/junit/net/i2p/router/tunnel/BatchedFragmentTest.java
index 3cc09e5824bf2b57e0cb8758f8d1327a3821cdfd..8a357ac76324ddab472c745516503147064e0fd0 100644
--- a/router/java/test/junit/net/i2p/router/tunnel/BatchedFragmentTest.java
+++ b/router/java/test/junit/net/i2p/router/tunnel/BatchedFragmentTest.java
@@ -10,7 +10,7 @@ package net.i2p.router.tunnel;
 
 import java.util.ArrayList;
 
-import static junit.framework.Assert.assertTrue;
+import static org.junit.Assert.assertTrue;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/router/java/test/junit/net/i2p/router/tunnel/BuildMessageTestStandalone.java b/router/java/test/junit/net/i2p/router/tunnel/BuildMessageTestStandalone.java
index 3479462215c1dc5778921310cdff9521a3f2fa4a..d2b49d4be3bb86ef8ddbe95d8b3db7f2bb25c522 100644
--- a/router/java/test/junit/net/i2p/router/tunnel/BuildMessageTestStandalone.java
+++ b/router/java/test/junit/net/i2p/router/tunnel/BuildMessageTestStandalone.java
@@ -56,7 +56,7 @@ public class BuildMessageTestStandalone extends TestCase {
         // populate and encrypt the message
         TunnelBuildMessage msg = new TunnelBuildMessage(ctx);
         for (int i = 0; i < order.size(); i++) {
-            int hop = ((Integer)order.get(i)).intValue();
+            int hop = order.get(i).intValue();
             PublicKey key = null;
             if (hop < _pubKeys.length)
                 key = _pubKeys[hop];
@@ -119,7 +119,7 @@ public class BuildMessageTestStandalone extends TestCase {
         boolean allAgree = true;
         for (int i = 0; i < cfg.getLength(); i++) {
             Hash peer = cfg.getPeer(i);
-            int record = ((Integer)order.get(i)).intValue();
+            int record = order.get(i).intValue();
             if (statuses[record] != 0)
                 allAgree = false;
             //else
diff --git a/router/java/test/junit/net/i2p/router/tunnel/GatewayTestBase.java b/router/java/test/junit/net/i2p/router/tunnel/GatewayTestBase.java
index 153515e96fc574346f6d1eeafb35e4babef58890..fd65ab01531f0340944d03cb9ad68261a8b1ed58 100644
--- a/router/java/test/junit/net/i2p/router/tunnel/GatewayTestBase.java
+++ b/router/java/test/junit/net/i2p/router/tunnel/GatewayTestBase.java
@@ -1,6 +1,6 @@
 package net.i2p.router.tunnel;
 
-import static junit.framework.Assert.assertTrue;
+import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -154,6 +154,8 @@ public abstract class GatewayTestBase extends RouterTestBase {
             _handler = new FragmentHandler(_context, TestReceiver.this);
             _received = new ArrayList<I2NPMessage>(1000);
         }
+
+        @SuppressWarnings("deprecation")
         public long receiveEncrypted(byte[] encrypted) {
             // fake all the hops...
             
diff --git a/router/java/test/junit/net/i2p/router/tunnel/InboundGatewayTest.java b/router/java/test/junit/net/i2p/router/tunnel/InboundGatewayTest.java
index ede9eae4eb81b3bfc1bd63ff374b8073d5101bfa..37d3938db9ad530c4a85bdeefe24f04c77c970c1 100644
--- a/router/java/test/junit/net/i2p/router/tunnel/InboundGatewayTest.java
+++ b/router/java/test/junit/net/i2p/router/tunnel/InboundGatewayTest.java
@@ -35,6 +35,7 @@ public class InboundGatewayTest extends GatewayTestBase {
         }
         
         @Override
+        @SuppressWarnings("deprecation")
         protected void handleAtEndpoint(byte []encrypted) {
             // now handle it at the endpoint
             InboundEndpointProcessor end = new InboundEndpointProcessor(_context, _config);
diff --git a/router/java/test/junit/net/i2p/router/tunnel/InboundTest.java b/router/java/test/junit/net/i2p/router/tunnel/InboundTest.java
index c9266b287530dcf5ca50c2363ed7ef5e8cd996cf..f61009ed0651c085261847612b502245964ae3a5 100644
--- a/router/java/test/junit/net/i2p/router/tunnel/InboundTest.java
+++ b/router/java/test/junit/net/i2p/router/tunnel/InboundTest.java
@@ -13,7 +13,7 @@ import org.junit.Test;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Hash;
 
-import static junit.framework.Assert.assertTrue;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Quick unit test for base functionality of inbound tunnel 
@@ -23,6 +23,7 @@ import static junit.framework.Assert.assertTrue;
 public class InboundTest extends RouterTestBase {
     
     @Test
+    @SuppressWarnings("deprecation")
     public void testInbound() {
     	int numHops = 8;
     	
diff --git a/router/java/test/junit/net/i2p/router/tunnel/OutboundTest.java b/router/java/test/junit/net/i2p/router/tunnel/OutboundTest.java
index 870baeaaf191f65cc42881ccff0f4e048e47887f..3905ec6e5bbd306ada08c9ff86f1cd26e9552d73 100644
--- a/router/java/test/junit/net/i2p/router/tunnel/OutboundTest.java
+++ b/router/java/test/junit/net/i2p/router/tunnel/OutboundTest.java
@@ -25,6 +25,7 @@ public class OutboundTest extends TestCase{
         _context = new RouterContext(null);
     }
     
+    @SuppressWarnings("deprecation")
     public void testOutbound() {
         int numHops = 8;
         TunnelCreatorConfig config = prepareConfig(numHops);