Index: java/main/src/test/java/com/framsticks/communication/RequestTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/communication/RequestTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/communication/RequestTest.java	(revision 101)
@@ -28,4 +28,5 @@
 
 		assertThat(Request.takeRequestId(true, " 2 simple second")).isEqualTo(Pair.make(2, "simple second"));
+		assertThat(Request.takeRequestId(true, " -3 simple")).isEqualTo(Pair.make(-3, "simple"));
 	}
 
Index: java/main/src/test/java/com/framsticks/core/ListChangeTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/core/ListChangeTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/core/ListChangeTest.java	(revision 101)
@@ -7,4 +7,5 @@
 
 import com.framsticks.core.ListChange.Action;
+import com.framsticks.params.AccessOperations;
 import com.framsticks.params.FramsClass;
 import com.framsticks.params.ListSink;
@@ -60,5 +61,5 @@
 	@Test(dependsOnMethods = "createReflectionAccess")
 	public void load() throws Exception {
-		access.select(listChange).load(ListSource.createFrom("type:2", "pos:0", "id:test"));
+		AccessOperations.load(access.select(listChange), ListSource.createFrom("type:2", "pos:0", "id:test"));
 
 		assertThat(listChange.action).isEqualTo(Action.Modify);
Index: java/main/src/test/java/com/framsticks/core/XmlBasedTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/core/XmlBasedTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/core/XmlBasedTest.java	(revision 101)
@@ -26,5 +26,7 @@
 	}
 
-	protected abstract String getConfigurationName();
+	protected String getConfigurationName() {
+		return this.getClass().getSimpleName() + ".xml";
+	}
 
 
Index: java/main/src/test/java/com/framsticks/gui/ProcedureBrowserTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/gui/ProcedureBrowserTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/gui/ProcedureBrowserTest.java	(revision 101)
@@ -17,5 +17,5 @@
 import com.framsticks.params.types.StringParam;
 import com.framsticks.parsers.XmlLoader;
-import com.framsticks.test.ChangeEvent;
+import com.framsticks.test.TestChangeEvent;
 import com.framsticks.test.TestClass;
 import com.framsticks.util.dispatching.FutureHandler;
@@ -82,8 +82,8 @@
 		waitForIdle();
 
-		final EventListener<ChangeEvent> listener = new EventListener<ChangeEvent>() {
+		final EventListener<TestChangeEvent> listener = new EventListener<TestChangeEvent>() {
 
 			@Override
-			public void action(ChangeEvent argument) {
+			public void action(TestChangeEvent argument) {
 				assertThat(argument.history).isEqualTo("");
 			}
@@ -96,5 +96,5 @@
 				assertThat(access.get("history", String.class)).isEqualTo("initial|Żółw|");
 
-				tree.addListener(Path.to(tree, "/"), access.getFramsClass().getParamEntry("history_changed", EventParam.class), listener, ChangeEvent.class, FutureHandler.doNothing(Void.class, failOnException));
+				tree.addListener(Path.to(tree, "/"), access.getFramsClass().getParamEntry("history_changed", EventParam.class), listener, TestChangeEvent.class, FutureHandler.doNothing(Void.class, failOnException));
 			}
 		});
Index: java/main/src/test/java/com/framsticks/gui/console/TrackConsoleTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/gui/console/TrackConsoleTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/gui/console/TrackConsoleTest.java	(revision 101)
@@ -3,7 +3,4 @@
 import org.testng.annotations.Test;
 
-import com.framsticks.communication.Address;
-import com.framsticks.communication.ClientSideManagedConnection;
-import com.framsticks.communication.Connection;
 import com.framsticks.core.Path;
 import com.framsticks.gui.GuiTest;
@@ -28,5 +25,5 @@
 		tree = new RemoteTree();
 
-		tree.setConnection(Connection.to(new ClientSideManagedConnection(), new Address("localhost:9009")));
+		tree.setAddress("localhost:9009");
 
 		console = new TrackConsole().setConnection(tree.getConnection());
Index: java/main/src/test/java/com/framsticks/hosting/ServerTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/hosting/ServerTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/hosting/ServerTest.java	(revision 101)
@@ -15,5 +15,5 @@
 import com.framsticks.remote.RemoteTree;
 
-import com.framsticks.test.ChangeEvent;
+import com.framsticks.test.TestChangeEvent;
 import com.framsticks.test.TestClass;
 import com.framsticks.core.Tree;
@@ -45,5 +45,5 @@
 	protected LocalTree hosted;
 	protected TestClass hostedObject;
-	protected EventListener<ChangeEvent> listener;
+	protected EventListener<TestChangeEvent> listener;
 	protected EventListener<ListChange> childListener;
 
@@ -52,8 +52,4 @@
 
 
-	@Override
-	protected String getConfigurationName() {
-		return "ServerTest.xml";
-	}
 
 	@Test
@@ -127,8 +123,8 @@
 	public void registerListener() {
 		final Waiter waiter = produceWaiter(1.0);
-		listener = new EventListener<ChangeEvent>() {
-
-			@Override
-			public void action(ChangeEvent argument) {
+		listener = new EventListener<TestChangeEvent>() {
+
+			@Override
+			public void action(TestChangeEvent argument) {
 				listenerArguments.add(argument.history);
 			}
@@ -142,5 +138,5 @@
 		});
 
-		addListener(remotePath, remoteTestFramsClass.getParamEntry("history_changed", EventParam.class), listener, ChangeEvent.class, produceWaiter(1.0).passInFuture(Void.class));
+		addListener(remotePath, remoteTestFramsClass.getParamEntry("history_changed", EventParam.class), listener, TestChangeEvent.class, produceWaiter(1.0).passInFuture(Void.class));
 	}
 
Index: java/main/src/test/java/com/framsticks/model/ModelPackageTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/model/ModelPackageTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/model/ModelPackageTest.java	(revision 101)
@@ -8,5 +8,5 @@
 import com.framsticks.params.FramsClass;
 import com.framsticks.params.ReflectionAccess;
-import com.framsticks.params.SourceInterface;
+import com.framsticks.params.Source;
 import com.framsticks.params.ValueParam;
 import com.framsticks.parsers.FileSource;
@@ -25,5 +25,5 @@
 		assertThat(stream).describedAs("stream " + filename).isNotNull();
 
-		SourceInterface source = new FileSource(stream, filename);
+		Source source = new FileSource(stream, filename);
 
 		assertThat(source.isClosed()).isFalse();
Index: java/main/src/test/java/com/framsticks/params/FramsClassBuilderTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/params/FramsClassBuilderTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/params/FramsClassBuilderTest.java	(revision 101)
@@ -10,5 +10,5 @@
 import com.framsticks.params.types.StringParam;
 import com.framsticks.parsers.Savers;
-import com.framsticks.test.ChangeEvent;
+import com.framsticks.test.TestChangeEvent;
 import com.framsticks.test.TestClass;
 import com.framsticks.test.TestConfiguration;
@@ -69,5 +69,5 @@
 					"id:history_changed",
 					"name:HistoryListener",
-					"type:e ChangeEvent",
+					"type:e TestChangeEvent",
 					"",
 					"prop:",
@@ -128,8 +128,8 @@
 		final Holder<String> called = new Holder<>();
 
-		final EventListener<ChangeEvent> listener = new EventListener<ChangeEvent>() {
+		final EventListener<TestChangeEvent> listener = new EventListener<TestChangeEvent>() {
 
 			@Override
-			public void action(ChangeEvent argument) {
+			public void action(TestChangeEvent argument) {
 				called.set(argument.history);
 			}
Index: java/main/src/test/java/com/framsticks/params/ParamBuilderTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/params/ParamBuilderTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/params/ParamBuilderTest.java	(revision 101)
@@ -30,5 +30,5 @@
 	public void loadParam() throws Exception {
 		access = new ReflectionAccess(ParamBuilder.class, builderFramsClass);
-		SourceInterface source = ListSource.createFrom("prop:", "id:v", "name:variable", "type:f", "help:just a testing variable", "");
+		Source source = ListSource.createFrom("prop:", "id:v", "name:variable", "type:f", "help:just a testing variable", "");
 
 		MultiParamLoader loader = new MultiParamLoader();
Index: java/main/src/test/java/com/framsticks/parsers/F0ParserTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/parsers/F0ParserTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/parsers/F0ParserTest.java	(revision 101)
@@ -73,5 +73,5 @@
 	@Test(dependsOnMethods = {"readF0"})
 	public void stripAccess() {
-		components = Util.stripAccess(accesses, ModelComponent.class);
+		components = ParamsUtil.stripAccess(accesses, ModelComponent.class);
 
 		assertThat(components.get(1)).isInstanceOf(Part.class);
Index: java/main/src/test/java/com/framsticks/running/ExternalProcessTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/running/ExternalProcessTest.java	(revision 100)
+++ java/main/src/test/java/com/framsticks/running/ExternalProcessTest.java	(revision 101)
@@ -9,4 +9,6 @@
 import org.testng.annotations.Test;
 
+import com.framsticks.core.ValueChange;
+import com.framsticks.params.EventListener;
 import com.framsticks.test.TestConfiguration;
 import com.framsticks.util.dispatching.Monitor;
@@ -25,8 +27,8 @@
 		final List<String> output = new LinkedList<>();
 
-		process.addListener(new OutputListener() {
+		process.addOutputListener(new EventListener<ValueChange>() {
 			@Override
-			public void onLineRead(String line) {
-				output.add(line);
+			public void action(ValueChange change) {
+				output.add(change.value.toString());
 			}
 		});
Index: java/main/src/test/java/com/framsticks/test/PrimeExperimentTest.java
===================================================================
--- java/main/src/test/java/com/framsticks/test/PrimeExperimentTest.java	(revision 101)
+++ java/main/src/test/java/com/framsticks/test/PrimeExperimentTest.java	(revision 101)
@@ -0,0 +1,20 @@
+package com.framsticks.test;
+
+import static org.fest.assertions.Assertions.*;
+
+import org.testng.annotations.Test;
+
+import com.framsticks.core.XmlBasedTest;
+
+@Test
+public class PrimeExperimentTest extends XmlBasedTest {
+
+	protected PrimeExperiment experiment;
+
+	@Test
+	public void start() {
+		assertThat(framsticks).isNotNull();
+		assertThat(framsticks.get("prime")).isInstanceOf(PrimeExperiment.class);
+		experiment = (PrimeExperiment) framsticks.get("prime");
+	}
+}
Index: java/main/src/test/resources/configs/PrimeExperimentTest.xml
===================================================================
--- java/main/src/test/resources/configs/PrimeExperimentTest.xml	(revision 101)
+++ java/main/src/test/resources/configs/PrimeExperimentTest.xml	(revision 101)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Framsticks>
+	<import class="com.framsticks.test.PrimeExperiment" />
+	<import class="com.framsticks.experiment.Simulator" />
+	<PrimeExperiment name="prime">
+	</PrimeExperiment>
+</Framsticks>
Index: java/main/src/test/resources/configs/ServerTest.xml
===================================================================
--- java/main/src/test/resources/configs/ServerTest.xml	(revision 100)
+++ java/main/src/test/resources/configs/ServerTest.xml	(revision 101)
@@ -6,5 +6,5 @@
 	<import class="com.framsticks.test.TestClass" />
 	<import class="com.framsticks.running.LoggingOutputListener" />
-	<Server name="server" port="9007">
+	<Server port="9007">
 		<LocalTree name="test">
 			<TestClass name="a test name" />
