Index: simplerunner/src/test/java/geniusweb/simplerunner/ClassPathConnectionFactoryTest.java
===================================================================
--- simplerunner/src/test/java/geniusweb/simplerunner/ClassPathConnectionFactoryTest.java	(revision 18)
+++ simplerunner/src/test/java/geniusweb/simplerunner/ClassPathConnectionFactoryTest.java	(revision 21)
@@ -11,7 +11,6 @@
 import geniusweb.actions.Action;
 import geniusweb.connection.ConnectionEnd;
-import geniusweb.party.inform.Inform;
+import geniusweb.inform.Inform;
 import geniusweb.references.PartyRef;
-import geniusweb.simplerunner.ClassPathConnectionFactory;
 
 public class ClassPathConnectionFactoryTest {
Index: simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java
===================================================================
--- simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java	(revision 18)
+++ simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java	(revision 21)
@@ -1,3 +1,5 @@
 package geniusweb.simplerunner;
+
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
@@ -27,4 +29,5 @@
 @RunWith(Parameterized.class)
 public class SessionRunnerE2ETest {
+	private static final int TEST_RUNTIME = 5000;
 	private final ObjectMapper jackson = new ObjectMapper();
 	private NegoRunner runner;
@@ -37,5 +40,6 @@
 				.asList(new Object[][] { { "src/test/resources/settings.json" },
 						{ "src/test/resources/settings2.json" },
-						{ "src/test/resources/shaoptoursettings.json" } });
+						{ "src/test/resources/shaoptoursettings.json" },
+						{ "src/test/resources/mopac.json" } });
 	}
 
@@ -53,5 +57,5 @@
 
 		runner = new NegoRunner(settings, new ClassPathConnectionFactory(),
-				logger);
+				logger, TEST_RUNTIME);
 
 	}
@@ -64,4 +68,6 @@
 	public void runTest() throws IOException {
 		runner.run();
+		assertTrue(runner.isProperlyStopped());
+		System.out.println("Final state:\n" + runner.getProtocol().getState());
 	}
 
Index: simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerTest.java
===================================================================
--- simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerTest.java	(revision 18)
+++ simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerTest.java	(revision 21)
@@ -16,4 +16,5 @@
 import org.mockito.ArgumentCaptor;
 
+import geniusweb.actions.PartyId;
 import geniusweb.protocol.CurrentNegoState;
 import geniusweb.protocol.NegoState;
@@ -29,5 +30,5 @@
 public class SessionRunnerTest {
 	private static final ProtocolException PROTOCOL_EXC = new ProtocolException(
-			"fake protocol exception", "test");
+			"fake protocol exception", new PartyId("test"));
 	private CurrentNegoState finishedEvent;
 	private final long NOW = 1000;
@@ -47,5 +48,5 @@
 	public void smokeTest() {
 		new NegoRunner(mock(SessionSettings.class),
-				mock(ProtocolToPartyConnFactory.class), logger);
+				mock(ProtocolToPartyConnFactory.class), logger, 5000);
 	}
 
@@ -59,5 +60,6 @@
 				ProtocolToPartyConnFactory.class);
 
-		NegoRunner runner = spy(new NegoRunner(settings, factory, logger));
+		NegoRunner runner = spy(
+				new NegoRunner(settings, factory, logger, 5000));
 		runner.run();
 
@@ -75,5 +77,4 @@
 		when(settings.getProtocol(any())).thenReturn(protocol);
 		SessionState state = mock(SessionState.class);
-		when(state.getError()).thenReturn(null);
 		when(protocol.getState()).thenReturn(state);
 		Reporter logger = mock(Reporter.class);
@@ -81,10 +82,11 @@
 		ProtocolToPartyConnFactory factory = mock(
 				ProtocolToPartyConnFactory.class);
-		NegoRunner runner = spy(new NegoRunner(settings, factory, logger) {
-			@Override
-			protected void logFinal(Level level, NegoState state) {
-				log.log(level, state.toString());
-			}
-		});
+		NegoRunner runner = spy(
+				new NegoRunner(settings, factory, logger, 5000) {
+					@Override
+					protected void logFinal(Level level, NegoState state) {
+						log.log(level, state.toString());
+					}
+				});
 		ArgumentCaptor<Listener> listener = ArgumentCaptor
 				.forClass(Listener.class);
@@ -107,15 +109,15 @@
 		when(settings.getProtocol(any())).thenReturn(protocol);
 		SessionState state = mock(SessionState.class);
-		when(state.getError()).thenReturn(PROTOCOL_EXC);
 		when(protocol.getState()).thenReturn(state);
 		@SuppressWarnings("unchecked")
 		ProtocolToPartyConnFactory factory = mock(
 				ProtocolToPartyConnFactory.class);
-		NegoRunner runner = spy(new NegoRunner(settings, factory, logger) {
-			@Override
-			protected void logFinal(Level level, NegoState state) {
-				log.log(level, state.toString());
-			}
-		});
+		NegoRunner runner = spy(
+				new NegoRunner(settings, factory, logger, 5000) {
+					@Override
+					protected void logFinal(Level level, NegoState state) {
+						log.log(level, state.toString());
+					}
+				});
 		ArgumentCaptor<Listener> listener = ArgumentCaptor
 				.forClass(Listener.class);
@@ -126,6 +128,8 @@
 		listener.getValue().notifyChange(finishedEvent);
 		verify(runner, times(1)).stop();
-		// check that the protocol error is logged properly
-		verify(logger, times(1)).log(eq(Level.WARNING), any(String.class));
+		// check final state is logged
+		String statestr = state.toString();
+		verify(logger, times(1)).log(any(), eq(statestr));
+
 	}
 
