Index: exampleparties/boulware/pom.xml
===================================================================
--- exampleparties/boulware/pom.xml	(revision 2)
+++ exampleparties/boulware/pom.xml	(revision 2)
@@ -0,0 +1,193 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>geniusweb.exampleparties</groupId>
+	<artifactId>boulware</artifactId>
+	<version>1.0.0</version>
+	<packaging>jar</packaging>
+
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<maven.compiler.target>1.8</maven.compiler.target>
+		<maven.compiler.source>1.8</maven.compiler.source>
+		<basedir>.</basedir>
+		<passwd>${env.ARTIFACTORY_PASS}</passwd>
+		<jackson-2-version>2.9.6</jackson-2-version>
+	</properties>
+
+	<distributionManagement>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+		</repository>
+	</distributionManagement>
+
+
+	<dependencies>
+
+
+		<dependency>
+			<groupId>geniusweb.exampleparties</groupId>
+			<artifactId>timedependentparty</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>logging</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+
+	</dependencies>
+
+
+	<repositories>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+
+	</repositories>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>jcenter</id>
+			<url>http://jcenter.bintray.com</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+
+	<build>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.8.0</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifest>
+							<mainClass>geniusweb.exampleparties.boulware.Boulware</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.10.1</version>
+				<executions>
+					<execution>
+						<id>attach-javadocs</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+						<configuration>
+							<additionalparam>${javadoc.opts}</additionalparam>
+							<additionalparam>-Xdoclint:none</additionalparam>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.jfrog.buildinfo</groupId>
+				<artifactId>artifactory-maven-plugin</artifactId>
+				<version>2.6.1</version>
+				<executions>
+					<execution>
+						<id>build-info</id>
+						<goals>
+							<goal>publish</goal>
+						</goals>
+						<configuration>
+							<publisher>
+								<contextUrl>http://artifactory.ewi.tudelft.nl/artifactory</contextUrl>
+								<repoKey>libs-release</repoKey>
+								<username>wouter</username>
+								<password>${passwd}</password>
+							</publisher>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.4.1</version>
+				<configuration>
+					<!-- get all project dependencies -->
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+					<archive>
+						<manifest>
+							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+							<mainClass>geniusweb.exampleparties.boulware.Boulware</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<!-- bind to the packaging phase -->
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+
+		</plugins>
+
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>org.jfrog.buildinfo</groupId>
+										<artifactId>artifactory-maven-plugin</artifactId>
+										<versionRange>[1.0.0,)</versionRange>
+										<goals>
+											<goal>publish</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore />
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+
+
+	</build>
+</project>
Index: exampleparties/boulware/src/main/java/geniusweb/exampleparties/boulware/Boulware.java
===================================================================
--- exampleparties/boulware/src/main/java/geniusweb/exampleparties/boulware/Boulware.java	(revision 2)
+++ exampleparties/boulware/src/main/java/geniusweb/exampleparties/boulware/Boulware.java	(revision 2)
@@ -0,0 +1,30 @@
+package geniusweb.exampleparties.boulware;
+
+import geniusweb.exampleparties.timedependentparty.TimeDependentParty;
+import tudelft.utilities.logging.Reporter;
+
+/**
+ * A simple party that places random bids and accepts when it receives an offer
+ * with sufficient utility.
+ */
+public class Boulware extends TimeDependentParty {
+
+	public Boulware() {
+		super();
+	}
+
+	public Boulware(Reporter reporter) {
+		super(reporter);
+	}
+
+	@Override
+	public String getDescription() {
+		return "Boulware: reluctant to concede";
+	}
+
+	@Override
+	public double getE() {
+		return 0.2;
+	}
+
+}
Index: exampleparties/conceder/pom.xml
===================================================================
--- exampleparties/conceder/pom.xml	(revision 2)
+++ exampleparties/conceder/pom.xml	(revision 2)
@@ -0,0 +1,193 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>geniusweb.exampleparties</groupId>
+	<artifactId>conceder</artifactId>
+	<version>1.0.0</version>
+	<packaging>jar</packaging>
+
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<maven.compiler.target>1.8</maven.compiler.target>
+		<maven.compiler.source>1.8</maven.compiler.source>
+		<basedir>.</basedir>
+		<passwd>${env.ARTIFACTORY_PASS}</passwd>
+		<jackson-2-version>2.9.6</jackson-2-version>
+	</properties>
+
+	<distributionManagement>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+		</repository>
+	</distributionManagement>
+
+
+	<dependencies>
+
+
+		<dependency>
+			<groupId>geniusweb.exampleparties</groupId>
+			<artifactId>timedependentparty</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>logging</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+
+	</dependencies>
+
+
+	<repositories>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+
+	</repositories>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>jcenter</id>
+			<url>http://jcenter.bintray.com</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+
+	<build>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.8.0</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifest>
+							<mainClass>geniusweb.exampleparties.conceder.Conceder</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.10.1</version>
+				<executions>
+					<execution>
+						<id>attach-javadocs</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+						<configuration>
+							<additionalparam>${javadoc.opts}</additionalparam>
+							<additionalparam>-Xdoclint:none</additionalparam>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.jfrog.buildinfo</groupId>
+				<artifactId>artifactory-maven-plugin</artifactId>
+				<version>2.6.1</version>
+				<executions>
+					<execution>
+						<id>build-info</id>
+						<goals>
+							<goal>publish</goal>
+						</goals>
+						<configuration>
+							<publisher>
+								<contextUrl>http://artifactory.ewi.tudelft.nl/artifactory</contextUrl>
+								<repoKey>libs-release</repoKey>
+								<username>wouter</username>
+								<password>${passwd}</password>
+							</publisher>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.4.1</version>
+				<configuration>
+					<!-- get all project dependencies -->
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+					<archive>
+						<manifest>
+							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+							<mainClass>geniusweb.exampleparties.conceder.Conceder</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<!-- bind to the packaging phase -->
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+
+		</plugins>
+
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>org.jfrog.buildinfo</groupId>
+										<artifactId>artifactory-maven-plugin</artifactId>
+										<versionRange>[1.0.0,)</versionRange>
+										<goals>
+											<goal>publish</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore />
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+
+
+	</build>
+</project>
Index: exampleparties/conceder/src/main/java/geniusweb/exampleparties/conceder/Conceder.java
===================================================================
--- exampleparties/conceder/src/main/java/geniusweb/exampleparties/conceder/Conceder.java	(revision 2)
+++ exampleparties/conceder/src/main/java/geniusweb/exampleparties/conceder/Conceder.java	(revision 2)
@@ -0,0 +1,30 @@
+package geniusweb.exampleparties.conceder;
+
+import geniusweb.exampleparties.timedependentparty.TimeDependentParty;
+import tudelft.utilities.logging.Reporter;
+
+/**
+ * A simple party that places random bids and accepts when it receives an offer
+ * with sufficient utility.
+ */
+public class Conceder extends TimeDependentParty {
+
+	public Conceder() {
+		super();
+	}
+
+	public Conceder(Reporter reporter) {
+		super(reporter);
+	}
+
+	@Override
+	public String getDescription() {
+		return "Conceder: going to the reservation value very quickly";
+	}
+
+	@Override
+	public double getE() {
+		return 2;
+	}
+
+}
Index: exampleparties/hardliner/pom.xml
===================================================================
--- exampleparties/hardliner/pom.xml	(revision 2)
+++ exampleparties/hardliner/pom.xml	(revision 2)
@@ -0,0 +1,193 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>geniusweb.exampleparties</groupId>
+	<artifactId>hardliner</artifactId>
+	<version>1.0.0</version>
+	<packaging>jar</packaging>
+
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<maven.compiler.target>1.8</maven.compiler.target>
+		<maven.compiler.source>1.8</maven.compiler.source>
+		<basedir>.</basedir>
+		<passwd>${env.ARTIFACTORY_PASS}</passwd>
+		<jackson-2-version>2.9.6</jackson-2-version>
+	</properties>
+
+	<distributionManagement>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+		</repository>
+	</distributionManagement>
+
+
+	<dependencies>
+
+
+		<dependency>
+			<groupId>geniusweb.exampleparties</groupId>
+			<artifactId>timedependentparty</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>logging</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+
+	</dependencies>
+
+
+	<repositories>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+
+	</repositories>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>jcenter</id>
+			<url>http://jcenter.bintray.com</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+
+	<build>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.8.0</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifest>
+							<mainClass>geniusweb.exampleparties.hardliner.Hardliner</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.10.1</version>
+				<executions>
+					<execution>
+						<id>attach-javadocs</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+						<configuration>
+							<additionalparam>${javadoc.opts}</additionalparam>
+							<additionalparam>-Xdoclint:none</additionalparam>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.jfrog.buildinfo</groupId>
+				<artifactId>artifactory-maven-plugin</artifactId>
+				<version>2.6.1</version>
+				<executions>
+					<execution>
+						<id>build-info</id>
+						<goals>
+							<goal>publish</goal>
+						</goals>
+						<configuration>
+							<publisher>
+								<contextUrl>http://artifactory.ewi.tudelft.nl/artifactory</contextUrl>
+								<repoKey>libs-release</repoKey>
+								<username>wouter</username>
+								<password>${passwd}</password>
+							</publisher>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.4.1</version>
+				<configuration>
+					<!-- get all project dependencies -->
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+					<archive>
+						<manifest>
+							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+							<mainClass>geniusweb.exampleparties.hardliner.Hardliner</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<!-- bind to the packaging phase -->
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+
+		</plugins>
+
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>org.jfrog.buildinfo</groupId>
+										<artifactId>artifactory-maven-plugin</artifactId>
+										<versionRange>[1.0.0,)</versionRange>
+										<goals>
+											<goal>publish</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore />
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+
+
+	</build>
+</project>
Index: exampleparties/hardliner/src/main/java/geniusweb/exampleparties/hardliner/Hardliner.java
===================================================================
--- exampleparties/hardliner/src/main/java/geniusweb/exampleparties/hardliner/Hardliner.java	(revision 2)
+++ exampleparties/hardliner/src/main/java/geniusweb/exampleparties/hardliner/Hardliner.java	(revision 2)
@@ -0,0 +1,30 @@
+package geniusweb.exampleparties.hardliner;
+
+import geniusweb.exampleparties.timedependentparty.TimeDependentParty;
+import tudelft.utilities.logging.Reporter;
+
+/**
+ * A simple party that places random bids and accepts when it receives an offer
+ * with sufficient utility.
+ */
+public class Hardliner extends TimeDependentParty {
+
+	public Hardliner() {
+		super();
+	}
+
+	public Hardliner(Reporter reporter) {
+		super(reporter);
+	}
+
+	@Override
+	public String getDescription() {
+		return "Hardliner: does not concede";
+	}
+
+	@Override
+	public double getE() {
+		return 0;
+	}
+
+}
Index: exampleparties/linear/pom.xml
===================================================================
--- exampleparties/linear/pom.xml	(revision 2)
+++ exampleparties/linear/pom.xml	(revision 2)
@@ -0,0 +1,193 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>geniusweb.exampleparties</groupId>
+	<artifactId>linear</artifactId>
+	<version>1.0.0</version>
+	<packaging>jar</packaging>
+
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<maven.compiler.target>1.8</maven.compiler.target>
+		<maven.compiler.source>1.8</maven.compiler.source>
+		<basedir>.</basedir>
+		<passwd>${env.ARTIFACTORY_PASS}</passwd>
+		<jackson-2-version>2.9.6</jackson-2-version>
+	</properties>
+
+	<distributionManagement>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+		</repository>
+	</distributionManagement>
+
+
+	<dependencies>
+
+
+		<dependency>
+			<groupId>geniusweb.exampleparties</groupId>
+			<artifactId>timedependentparty</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>logging</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+
+	</dependencies>
+
+
+	<repositories>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+
+	</repositories>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>jcenter</id>
+			<url>http://jcenter.bintray.com</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+
+	<build>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.8.0</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifest>
+							<mainClass>geniusweb.exampleparties.linear.Linear</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.10.1</version>
+				<executions>
+					<execution>
+						<id>attach-javadocs</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+						<configuration>
+							<additionalparam>${javadoc.opts}</additionalparam>
+							<additionalparam>-Xdoclint:none</additionalparam>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.jfrog.buildinfo</groupId>
+				<artifactId>artifactory-maven-plugin</artifactId>
+				<version>2.6.1</version>
+				<executions>
+					<execution>
+						<id>build-info</id>
+						<goals>
+							<goal>publish</goal>
+						</goals>
+						<configuration>
+							<publisher>
+								<contextUrl>http://artifactory.ewi.tudelft.nl/artifactory</contextUrl>
+								<repoKey>libs-release</repoKey>
+								<username>wouter</username>
+								<password>${passwd}</password>
+							</publisher>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.4.1</version>
+				<configuration>
+					<!-- get all project dependencies -->
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+					<archive>
+						<manifest>
+							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+							<mainClass>geniusweb.exampleparties.linear.Linear</mainClass>
+						</manifest>
+					</archive>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<!-- bind to the packaging phase -->
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+
+		</plugins>
+
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>org.jfrog.buildinfo</groupId>
+										<artifactId>artifactory-maven-plugin</artifactId>
+										<versionRange>[1.0.0,)</versionRange>
+										<goals>
+											<goal>publish</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore />
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+
+
+	</build>
+</project>
Index: exampleparties/linear/src/main/java/geniusweb/exampleparties/linear/Linear.java
===================================================================
--- exampleparties/linear/src/main/java/geniusweb/exampleparties/linear/Linear.java	(revision 2)
+++ exampleparties/linear/src/main/java/geniusweb/exampleparties/linear/Linear.java	(revision 2)
@@ -0,0 +1,30 @@
+package geniusweb.exampleparties.linear;
+
+import geniusweb.exampleparties.timedependentparty.TimeDependentParty;
+import tudelft.utilities.logging.Reporter;
+
+/**
+ * A simple party that places random bids and accepts when it receives an offer
+ * with sufficient utility.
+ */
+public class Linear extends TimeDependentParty {
+
+	public Linear() {
+		super();
+	}
+
+	public Linear(Reporter reporter) {
+		super(reporter);
+	}
+
+	@Override
+	public String getDescription() {
+		return "Linear: concedes linearly with time";
+	}
+
+	@Override
+	public double getE() {
+		return 1;
+	}
+
+}
Index: exampleparties/pom.xml
===================================================================
--- exampleparties/pom.xml	(revision 1)
+++ exampleparties/pom.xml	(revision 2)
@@ -18,4 +18,9 @@
 		<module>randomparty</module>
 		<module>randompartypy</module>
+		<module>timedependentparty</module>
+		<module>conceder</module>
+		<module>hardliner</module>
+		<module>boulware</module>
+		<module>linear</module>
 	</modules>
 </project>
Index: exampleparties/randomparty/pom.xml
===================================================================
--- exampleparties/randomparty/pom.xml	(revision 1)
+++ exampleparties/randomparty/pom.xml	(revision 2)
@@ -54,5 +54,5 @@
 			<groupId>tudelft.utilities</groupId>
 			<artifactId>immutablelist</artifactId>
-			<version>1.0.0</version>
+			<version>1.0.1</version>
 		</dependency>
 
Index: exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java
===================================================================
--- exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java	(revision 1)
+++ exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java	(revision 2)
@@ -23,4 +23,6 @@
 import geniusweb.party.inform.Settings;
 import geniusweb.party.inform.YourTurn;
+import geniusweb.profile.PartialOrdering;
+import geniusweb.profile.Profile;
 import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
 import geniusweb.profileconnection.ProfileConnectionFactory;
@@ -55,6 +57,5 @@
 			if (info instanceof Settings) {
 				Settings settings = (Settings) info;
-				this.profileint = ProfileConnectionFactory
-						.create(settings.getProfile().getURI(), getReporter());
+				this.profileint = ProfileConnectionFactory.create(settings.getProfile().getURI(), getReporter());
 				this.me = settings.getID();
 				this.progress = settings.getProgress();
@@ -80,9 +81,7 @@
 	public Capabilities getCapabilities() {
 		try {
-			return new Capabilities(new HashSet<>(
-					Arrays.asList(new ProtocolRef(new URI("SAOP")))));
+			return new Capabilities(new HashSet<>(Arrays.asList(new ProtocolRef(new URI("SAOP")))));
 		} catch (URISyntaxException e) {
-			getReporter().log(Level.SEVERE, "Failed to create capabilities URI",
-					e);
+			getReporter().log(Level.SEVERE, "Failed to create capabilities URI", e);
 			return null;
 		}
@@ -100,6 +99,5 @@
 		} else {
 			// for demo. Obviously full bids have higher util in general
-			AllPartialBidsList bidspace = new AllPartialBidsList(
-					profileint.getProfile().getDomain());
+			AllPartialBidsList bidspace = new AllPartialBidsList(profileint.getProfile().getDomain());
 			Bid bid = null;
 			for (int attempt = 0; attempt < 20 && !isGood(bid); attempt++) {
@@ -114,7 +112,14 @@
 
 	private boolean isGood(Bid bid) {
-		return bid != null
-				&& ((LinearAdditiveUtilitySpace) profileint.getProfile())
-						.getUtility(bid).doubleValue() > 0.6;
+		if (bid == null)
+			return false;
+		Profile profile = profileint.getProfile();
+		if (profile instanceof LinearAdditiveUtilitySpace) {
+			return ((LinearAdditiveUtilitySpace) profile).getUtility(bid).doubleValue() > 0.6;
+		}
+		if (profile instanceof PartialOrdering) {
+			return ((PartialOrdering) profile).isPreferredOrEqual(bid, profile.getReservationBid());
+		}
+		throw new IllegalArgumentException("Can not handle profile type " + profile.getClass());
 	}
 
Index: exampleparties/randompartypy/pom.xml
===================================================================
--- exampleparties/randompartypy/pom.xml	(revision 1)
+++ exampleparties/randompartypy/pom.xml	(revision 2)
@@ -47,5 +47,5 @@
 			<groupId>tudelft.utilities</groupId>
 			<artifactId>immutablelist</artifactId>
-			<version>1.0.0</version>
+			<version>1.0.1</version>
 		</dependency>
 
Index: exampleparties/randompartypy/src/main/resources/RandomParty.py
===================================================================
--- exampleparties/randompartypy/src/main/resources/RandomParty.py	(revision 1)
+++ exampleparties/randompartypy/src/main/resources/RandomParty.py	(revision 2)
@@ -23,4 +23,5 @@
 import geniusweb.party.DefaultParty as DefaultParty
 import geniusweb.profile.Profile as Profile
+import geniusweb.profile.PartialOrdering as PartialOrdering
 import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace as LinearAdditiveUtilitySpace
 import geniusweb.references.ProfileRef as ProfileRef
@@ -29,4 +30,5 @@
 import geniusweb.profileconnection.ProfileInterface as ProfileInterface
 import geniusweb.progress.ProgressRounds as ProgressRounds
+
 
 import com.fasterxml.jackson.databind.ObjectMapper as ObjectMapper
@@ -92,3 +94,10 @@
 
 	def _isGood(self, bid):
-		return bid != None and self.profile.getProfile().getUtility(bid).doubleValue() > 0.6;
+		if bid == None:
+			return false
+		profile = self.profile.getProfile()
+		if isinstance(profile, LinearAdditiveUtilitySpace):
+			return profile.getUtility(bid).doubleValue() > 0.6;
+		if isinstance(profile, PartialOrdering):
+			return profile.isPreferredOrEqual(bid, profile.getReservationBid())
+		raise Exception("Can not handle this type of profile")
Index: exampleparties/timedependentparty/pom.xml
===================================================================
--- exampleparties/timedependentparty/pom.xml	(revision 2)
+++ exampleparties/timedependentparty/pom.xml	(revision 2)
@@ -0,0 +1,236 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>geniusweb.exampleparties</groupId>
+	<artifactId>timedependentparty</artifactId>
+	<version>1.0.0</version>
+	<packaging>jar</packaging>
+
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<maven.compiler.target>1.8</maven.compiler.target>
+		<maven.compiler.source>1.8</maven.compiler.source>
+		<basedir>.</basedir>
+		<passwd>${env.ARTIFACTORY_PASS}</passwd>
+		<jackson-2-version>2.9.6</jackson-2-version>
+	</properties>
+
+	<distributionManagement>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+		</repository>
+	</distributionManagement>
+
+
+	<dependencies>
+
+
+		<dependency>
+			<groupId>geniusweb</groupId>
+			<artifactId>party</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>geniusweb</groupId>
+			<artifactId>bidspace</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>logging</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>geniusweb</groupId>
+			<artifactId>profileconnection</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>immutablelist</artifactId>
+			<version>1.0.1</version>
+		</dependency>
+
+		<!-- the core, which includes Streaming API, shared low-level abstractions 
+			(but NOT data-binding) -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+
+		<!-- Just the annotations; use this dependency if you want to attach annotations 
+			to classes without connecting them to the code. -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-annotations</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+
+		<!-- databinding; ObjectMapper, JsonNode and related classes are here -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+
+		<!-- smile (binary JSON). Other artifacts in this group do other formats. -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.dataformat</groupId>
+			<artifactId>jackson-dataformat-smile</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+		<!-- JAX-RS provider -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.jaxrs</groupId>
+			<artifactId>jackson-jaxrs-json-provider</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+		<!-- Support for JAX-B annotations as additional configuration -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.module</groupId>
+			<artifactId>jackson-module-jaxb-annotations</artifactId>
+			<version>${jackson-2-version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.12</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-all</artifactId>
+			<version>1.9.5</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>tudelft.utilities</groupId>
+			<artifactId>junit</artifactId>
+			<version>1.0.1</version>
+			<scope>test</scope>
+		</dependency>
+
+	</dependencies>
+
+
+	<repositories>
+		<repository>
+			<id>artifactory.ewi.tudelft.nl</id>
+			<url>http://artifactory.ewi.tudelft.nl/artifactory/libs-release</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+
+	</repositories>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>jcenter</id>
+			<url>http://jcenter.bintray.com</url>
+		</pluginRepository>
+	</pluginRepositories>
+
+
+	<build>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.8.0</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.10.1</version>
+				<executions>
+					<execution>
+						<id>attach-javadocs</id>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+						<configuration>
+							<additionalparam>${javadoc.opts}</additionalparam>
+							<additionalparam>-Xdoclint:none</additionalparam>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>org.jfrog.buildinfo</groupId>
+				<artifactId>artifactory-maven-plugin</artifactId>
+				<version>2.6.1</version>
+				<executions>
+					<execution>
+						<id>build-info</id>
+						<goals>
+							<goal>publish</goal>
+						</goals>
+						<configuration>
+							<publisher>
+								<contextUrl>http://artifactory.ewi.tudelft.nl/artifactory</contextUrl>
+								<repoKey>libs-release</repoKey>
+								<username>wouter</username>
+								<password>${passwd}</password>
+							</publisher>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+
+
+		</plugins>
+
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>org.jfrog.buildinfo</groupId>
+										<artifactId>artifactory-maven-plugin</artifactId>
+										<versionRange>[1.0.0,)</versionRange>
+										<goals>
+											<goal>publish</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore />
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+
+
+	</build>
+</project>
Index: exampleparties/timedependentparty/src/main/java/geniusweb/exampleparties/timedependentparty/TimeDependentParty.java
===================================================================
--- exampleparties/timedependentparty/src/main/java/geniusweb/exampleparties/timedependentparty/TimeDependentParty.java	(revision 2)
+++ exampleparties/timedependentparty/src/main/java/geniusweb/exampleparties/timedependentparty/TimeDependentParty.java	(revision 2)
@@ -0,0 +1,196 @@
+package geniusweb.exampleparties.timedependentparty;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Random;
+import java.util.logging.Level;
+
+import geniusweb.actions.Accept;
+import geniusweb.actions.Action;
+import geniusweb.actions.Offer;
+import geniusweb.actions.PartyId;
+import geniusweb.bidspace.AllBidsList;
+import geniusweb.bidspace.BidsWithUtility;
+import geniusweb.issuevalue.Bid;
+import geniusweb.party.Capabilities;
+import geniusweb.party.DefaultParty;
+import geniusweb.party.inform.ActionDone;
+import geniusweb.party.inform.Finished;
+import geniusweb.party.inform.Inform;
+import geniusweb.party.inform.Settings;
+import geniusweb.party.inform.YourTurn;
+import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
+import geniusweb.profile.utilityspace.UtilitySpace;
+import geniusweb.profileconnection.ProfileConnectionFactory;
+import geniusweb.profileconnection.ProfileInterface;
+import geniusweb.progress.Progress;
+import geniusweb.progress.ProgressRounds;
+import geniusweb.references.ProtocolRef;
+import tudelft.utilities.logging.Reporter;
+
+/**
+ * General time dependent party. This is a simplistic implementation that does
+ * brute-force search through the bidspace and can handle bidspace sizes up to
+ * 2^31 (approx 1 billion bids). It may take excessive time and run out of time
+ * on bidspaces > 10000 bids. In special cases it may even run out of memory,
+ */
+public abstract class TimeDependentParty extends DefaultParty {
+
+	private ProfileInterface profileint;
+	private PartyId me;
+	private Progress progress;
+	private Double minUtil = null, maxUtil = null;
+	private Bid lastReceivedBid = null;
+	private double tolerance;
+
+	public TimeDependentParty() {
+		super();
+	}
+
+	public TimeDependentParty(Reporter reporter) {
+		super(reporter); // for debugging
+	}
+
+	@Override
+	public Capabilities getCapabilities() {
+		try {
+			return new Capabilities(new HashSet<>(
+					Arrays.asList(new ProtocolRef(new URI("SAOP")))));
+		} catch (URISyntaxException e) {
+			getReporter().log(Level.SEVERE, "Failed to create capabilities URI",
+					e);
+			return null;
+		}
+	}
+
+	@Override
+	public void notifyChange(Inform info) {
+		try {
+			if (info instanceof Settings) {
+				Settings settings = (Settings) info;
+				this.profileint = ProfileConnectionFactory
+						.create(settings.getProfile().getURI(), getReporter());
+				this.me = settings.getID();
+				this.progress = settings.getProgress();
+				computeMinMax();
+			} else if (info instanceof ActionDone) {
+				Action otheract = ((ActionDone) info).getAction();
+				if (otheract instanceof Offer) {
+					lastReceivedBid = ((Offer) otheract).getBid();
+				}
+			} else if (info instanceof YourTurn) {
+				myTurn();
+				if (progress instanceof ProgressRounds) {
+					progress = ((ProgressRounds) progress).advance();
+				}
+			} else if (info instanceof Finished) {
+				getReporter().log(Level.INFO, "Final ourcome:" + info);
+			}
+		} catch (Exception e) {
+			getReporter().log(Level.SEVERE, "Failed to handle info", e);
+		}
+	}
+
+	/**
+	 * @return the E value that controls the party's behaviour. Depending on the
+	 *         value of e, extreme sets show clearly different patterns of
+	 *         behaviour [1]:
+	 * 
+	 *         1. Boulware: For this strategy e < 1 and the initial offer is
+	 *         maintained till time is almost exhausted, when the agent concedes
+	 *         up to its reservation value.
+	 * 
+	 *         2. Conceder: For this strategy e > 1 and the agent goes to its
+	 *         reservation value very quickly.
+	 * 
+	 *         3. When e = 1, the price is increased linearly.
+	 * 
+	 *         4. When e = 0, the agent plays hardball.
+	 */
+	public abstract double getE();
+
+	/******************* private support funcs ************************/
+
+	private void myTurn() throws IOException {
+		Action myAction = null;
+		Bid bid = makeBid();
+		UtilitySpace utilspace = getUtilSpace();
+
+		if (lastReceivedBid != null && utilspace.getUtility(lastReceivedBid)
+				.compareTo(utilspace.getUtility(bid)) > 0) {
+			myAction = new Accept(me, lastReceivedBid);
+		} else {
+			myAction = new Offer(me, makeBid());
+		}
+		getConnection().send(myAction);
+
+	}
+
+	private UtilitySpace getUtilSpace() {
+		return (LinearAdditiveUtilitySpace) profileint.getProfile();
+	}
+
+	/**
+	 * Computes the fields minutil and maxUtil if not yet computed. minutil is
+	 * the minimum utility of any bid, but at least the utility of the
+	 * reservation bid. maxUtil is the maximum util of any bid.
+	 * <p>
+	 * TODO this is simplistic, very expensive method and may cause us to run
+	 * out of time on large domains.
+	 * <p>
+	 * Can be called only after profileint has been set.
+	 */
+	private void computeMinMax() {
+		if (this.maxUtil != null && this.minUtil != null)
+			return;
+		this.minUtil = 1d;
+		this.maxUtil = 0d;
+		UtilitySpace utilspace = getUtilSpace();
+		AllBidsList allbidslist = new AllBidsList(
+				profileint.getProfile().getDomain());
+		for (Bid bid : allbidslist) {
+			double util = utilspace.getUtility(bid).doubleValue();
+			if (util < minUtil)
+				minUtil = util;
+			if (util > maxUtil)
+				maxUtil = util;
+		}
+		double rv = utilspace.getUtility(utilspace.getReservationBid())
+				.doubleValue();
+		if (rv > minUtil)
+			minUtil = rv;
+		tolerance = 100 / allbidslist.size().longValue();
+		tolerance = Math.max(tolerance, 0.1);
+	}
+
+	private Bid makeBid() {
+		double time = progress.get(System.currentTimeMillis());
+		double utilityGoal = utilityGoal(time, getE());
+		BidsWithUtility options = new BidsWithUtility(
+				(LinearAdditiveUtilitySpace) profileint.getProfile(),
+				BigDecimal.valueOf(utilityGoal),
+				BigDecimal.valueOf(utilityGoal + tolerance));
+		// pick a random one.
+		return options.get(new Random().nextInt(options.size().intValue()));
+
+	}
+
+	/**
+	 * 
+	 * @param t the time in [0,1] where 0 means start of nego and 1 the end of
+	 *          nego (absolute time/round limit)
+	 * @param e the e value
+	 * @return the utility goal for this time and e value
+	 */
+	private double utilityGoal(double t, double e) {
+		double ft = 0;
+		if (e != 0)
+			ft = Math.pow(t, 1 / e);
+		// we subtract 0.000001 to correct possibly small round-up errors
+		return minUtil + (maxUtil - minUtil) * (1 - ft) - 0.000001;
+	}
+}
Index: exampleparties/timedependentparty/src/test/java/geniusweb/exampleparties/timedependentparty/TimeDependentPartyTest.java
===================================================================
--- exampleparties/timedependentparty/src/test/java/geniusweb/exampleparties/timedependentparty/TimeDependentPartyTest.java	(revision 2)
+++ exampleparties/timedependentparty/src/test/java/geniusweb/exampleparties/timedependentparty/TimeDependentPartyTest.java	(revision 2)
@@ -0,0 +1,253 @@
+package geniusweb.exampleparties.timedependentparty;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import geniusweb.actions.Action;
+import geniusweb.actions.EndNegotiation;
+import geniusweb.actions.Offer;
+import geniusweb.actions.PartyId;
+import geniusweb.bidspace.AllBidsList;
+import geniusweb.connection.Connection;
+import geniusweb.issuevalue.Bid;
+import geniusweb.party.Capabilities;
+import geniusweb.party.inform.ActionDone;
+import geniusweb.party.inform.Finished;
+import geniusweb.party.inform.Inform;
+import geniusweb.party.inform.Settings;
+import geniusweb.party.inform.YourTurn;
+import geniusweb.profile.Profile;
+import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
+import geniusweb.progress.ProgressRounds;
+import geniusweb.references.ProfileRef;
+import geniusweb.references.ProtocolRef;
+import geniusweb.references.Reference;
+import tudelft.utilities.listener.DefaultListenable;
+import tudelft.utilities.logging.Reporter;
+
+public class TimeDependentPartyTest {
+
+	private static final ProtocolRef SAOP = new ProtocolRef("SAOP");
+	private static final PartyId otherparty = new PartyId("other");
+	private static final String PROFILE = "src/test/resources/testprofile.json";
+	private final static ObjectMapper jackson = new ObjectMapper();
+
+	private TimeDependentParty party;
+	private TestConnection connection = new TestConnection();
+	private ProtocolRef protocol = mock(ProtocolRef.class);
+	private ProgressRounds progress = mock(ProgressRounds.class);
+	private Settings settings;
+	private LinearAdditiveUtilitySpace profile;
+
+	@Before
+	public void before() throws JsonParseException, JsonMappingException,
+			IOException, URISyntaxException {
+		party = new TimeDependentParty() {
+
+			@Override
+			public String getDescription() {
+				return "test";
+			}
+
+			@Override
+			public double getE() {
+				return 2; // conceder-like
+			}
+		};
+		settings = new Settings(new PartyId("party1"),
+				new ProfileRef(new URI("file:" + PROFILE)), protocol, progress);
+
+		String serialized = new String(Files.readAllBytes(Paths.get(PROFILE)),
+				StandardCharsets.UTF_8);
+		profile = (LinearAdditiveUtilitySpace) jackson.readValue(serialized,
+				Profile.class);
+
+	}
+
+	@Test
+	public void smokeTest() {
+	}
+
+	@Test
+	public void getDescriptionTest() {
+		assertNotNull(party.getDescription());
+	}
+
+	@Test
+	public void getCapabilitiesTest() {
+		Capabilities capabilities = party.getCapabilities();
+		assertFalse("party does not define protocols",
+				capabilities.getProtocols().isEmpty());
+	}
+
+	@Test
+	public void testInformConnection() {
+		party.connect(connection);
+		// agent should not start acting just after an inform
+		assertEquals(0, connection.getActions().size());
+	}
+
+	@Test
+	public void testInformSettings() {
+		party.connect(connection);
+		connection.notifyChange(settings);
+		assertEquals(0, connection.getActions().size());
+	}
+
+	@Test
+	public void testInformAndConnection() {
+		party.connect(connection);
+		party.notifyChange(settings);
+		assertEquals(0, connection.getActions().size());
+	}
+
+	@Test
+	public void testOtherWalksAway() {
+		party.connect(connection);
+		party.notifyChange(settings);
+
+		party.notifyChange(new ActionDone(new EndNegotiation(otherparty)));
+
+		// party should not act at this point
+		assertEquals(0, connection.getActions().size());
+	}
+
+	@Test
+	public void testAgentHasFirstTurn() {
+		party.connect(connection);
+		party.notifyChange(settings);
+
+		party.notifyChange(new YourTurn());
+		assertEquals(1, connection.getActions().size());
+		assertTrue(connection.getActions().get(0) instanceof Offer);
+	}
+
+//	@Test
+//	public void testAgentAccepts() {
+//		party.connect(connection);
+//		party.notifyChange(settings);
+//
+//		Bid bid = findBestBid();
+//		party.notifyChange(new ActionDone(new Offer(otherparty, bid)));
+//		party.notifyChange(new YourTurn());
+//		assertEquals(1, connection.getActions().size());
+//		assertTrue(connection.getActions().get(0) instanceof Accept);
+//
+//	}
+
+	@Test
+	public void testAgentLogsFinal() {
+		// this log output is optional, this is to show how to check log
+		Reporter reporter = mock(Reporter.class);
+		party = new TimeDependentParty(reporter) {
+
+			@Override
+			public String getDescription() {
+				return "test";
+			}
+
+			@Override
+			public double getE() {
+				return 2; /// conceder like
+			}
+		};
+		party.connect(connection);
+		party.notifyChange(settings);
+		party.notifyChange(new Finished(null));
+
+		verify(reporter).log(eq(Level.INFO),
+				eq("Final ourcome:Finished[null]"));
+	}
+
+	@Test
+	public void testAgentsUpdatesProgress() {
+		party.connect(connection);
+		party.notifyChange(settings);
+
+		party.notifyChange(new YourTurn());
+		verify(progress).advance();
+	}
+
+	@Test
+	public void testGetCapabilities() {
+		assertTrue(party.getCapabilities().getProtocols().contains(SAOP));
+	}
+
+	private Bid findBestBid() {
+		BigDecimal bestvalue = BigDecimal.ZERO;
+		Bid best = null;
+		for (Bid bid : new AllBidsList(profile.getDomain())) {
+			BigDecimal util = profile.getUtility(bid);
+			if (util.compareTo(bestvalue) > 0) {
+				best = bid;
+				bestvalue = util;
+			}
+		}
+		return best;
+	}
+
+}
+
+/**
+ * A "real" connection object, because the party is going to subscribe etc, and
+ * without a real connection we would have to do a lot of mocks that would make
+ * the test very hard to read.
+ *
+ */
+class TestConnection extends DefaultListenable<Inform>
+		implements Connection<Inform, Action> {
+	private List<Action> actions = new LinkedList<>();
+
+	@Override
+	public void send(Action action) throws IOException {
+		actions.add(action);
+	}
+
+	@Override
+	public Reference getReference() {
+		return null;
+	}
+
+	@Override
+	public URI getRemoteURI() {
+		return null;
+	}
+
+	@Override
+	public void close() {
+
+	}
+
+	@Override
+	public Error getError() {
+		return null;
+	}
+
+	public List<Action> getActions() {
+		return actions;
+	}
+
+}
Index: exampleparties/timedependentparty/src/test/resources/testprofile.json
===================================================================
--- exampleparties/timedependentparty/src/test/resources/testprofile.json	(revision 2)
+++ exampleparties/timedependentparty/src/test/resources/testprofile.json	(revision 2)
@@ -0,0 +1,45 @@
+{
+	"LinearAdditiveUtilitySpace": {
+		"issueUtilities": {
+			"issue2": {
+				"numberutils": {
+					"lowValue": 12,
+					"lowUtility": 0.3,
+					"highValue": 18,
+					"highUtility": 0.9
+				}
+			},
+			"issue1": {
+				"discreteutils": {
+					"valueUtilities": {
+						"issue1value1": 0.2,
+						"issue1value2": 0.8
+					}
+				}
+			}
+		},
+		"issueWeights": {
+			"issue2": 0.4,
+			"issue1": 0.6
+		},
+		"domain": {
+			"name": "test",
+			"issuesValues": {
+				"issue2": {
+					"range": ["12", "18", "1"]
+				},
+				"issue1": {
+					"values": ["issue1value1", "issue1value2"]
+				}
+			}
+		},
+		"name": "testprofile",
+				"reservationBid": {
+			"issuevalues": {
+				"issue1": "issuevalue1",
+				"issue2": "12"
+			}
+		}
+		
+	}
+}
