Index: exampleparties/anac2019/agentgg/pom.xml
===================================================================
--- exampleparties/anac2019/agentgg/pom.xml	(revision 30)
+++ exampleparties/anac2019/agentgg/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties.anac2019</groupId>
 	<artifactId>agentgg</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -184,4 +184,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/anac2019/winkyagent/pom.xml
===================================================================
--- exampleparties/anac2019/winkyagent/pom.xml	(revision 30)
+++ exampleparties/anac2019/winkyagent/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties.anac2019</groupId>
 	<artifactId>winkyagent</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -183,4 +183,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/boulware/pom.xml
===================================================================
--- exampleparties/boulware/pom.xml	(revision 30)
+++ exampleparties/boulware/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>boulware</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -98,4 +98,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/comparebids/pom.xml
===================================================================
--- exampleparties/comparebids/pom.xml	(revision 30)
+++ exampleparties/comparebids/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>comparebids</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
Index: exampleparties/conceder/pom.xml
===================================================================
--- exampleparties/conceder/pom.xml	(revision 30)
+++ exampleparties/conceder/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>conceder</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -98,4 +98,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/hardliner/pom.xml
===================================================================
--- exampleparties/hardliner/pom.xml	(revision 30)
+++ exampleparties/hardliner/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>hardliner</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -98,4 +98,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/humangui/pom.xml
===================================================================
--- exampleparties/humangui/pom.xml	(revision 30)
+++ exampleparties/humangui/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>humangui</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -173,4 +173,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/linear/pom.xml
===================================================================
--- exampleparties/linear/pom.xml	(revision 30)
+++ exampleparties/linear/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>linear</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -95,4 +95,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/randomparty/pom.xml
===================================================================
--- exampleparties/randomparty/pom.xml	(revision 30)
+++ exampleparties/randomparty/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>randomparty</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -179,4 +179,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java
===================================================================
--- exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java	(revision 30)
+++ exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java	(revision 31)
@@ -14,4 +14,5 @@
 import geniusweb.actions.Accept;
 import geniusweb.actions.Action;
+import geniusweb.actions.LearningDone;
 import geniusweb.actions.Offer;
 import geniusweb.actions.PartyId;
@@ -85,11 +86,14 @@
 			if (info instanceof Settings) {
 				Settings settings = (Settings) info;
-				this.profileint = ProfileConnectionFactory
-						.create(settings.getProfile().getURI(), getReporter());
 				this.me = settings.getID();
 				this.progress = settings.getProgress();
 				this.settings = settings;
 				this.protocol = settings.getProtocol().getURI().getPath();
-
+				if ("Learn".equals(protocol)) {
+					getConnection().send(new LearningDone(me));
+				} else {
+					this.profileint = ProfileConnectionFactory.create(
+							settings.getProfile().getURI(), getReporter());
+				}
 			} else if (info instanceof ActionDone) {
 				Action otheract = ((ActionDone) info).getAction();
@@ -101,4 +105,5 @@
 			} else if (info instanceof Finished) {
 				getReporter().log(Level.INFO, "Final ourcome:" + info);
+				terminate(); // stop this party and free resources.
 			} else if (info instanceof Voting) {
 				switch (protocol) {
Index: exampleparties/randompartypy/pom.xml
===================================================================
--- exampleparties/randompartypy/pom.xml	(revision 30)
+++ exampleparties/randompartypy/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>randompyparty</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
Index: exampleparties/randompartypy/src/main/resources/RandomParty.py
===================================================================
--- exampleparties/randompartypy/src/main/resources/RandomParty.py	(revision 30)
+++ exampleparties/randompartypy/src/main/resources/RandomParty.py	(revision 31)
@@ -6,4 +6,5 @@
 import geniusweb.inform.Settings as Settings
 import geniusweb.inform.YourTurn as YourTurn
+import geniusweb.inform.Finished as Finished
 
 
@@ -14,4 +15,5 @@
 import java.util.Random as Random
 import java.util.Collections as Collections
+import java.util.logging.Level as Level
  
 import geniusweb.actions.Accept as Accept
@@ -63,4 +65,8 @@
 			if isinstance(self.progress, ProgressRounds) :
 				self.progress = self.progress.advance();
+		elif isinstance(info,Finished) :
+			self.getReporter().log(Level.INFO, "Final ourcome:" + info.toString())
+			self.terminate()
+		
 
 	# Override
Index: exampleparties/randompartypy/src/test/java/geniusweb/exampleparties/randompartypy/RandomPartyTest.java
===================================================================
--- exampleparties/randompartypy/src/test/java/geniusweb/exampleparties/randompartypy/RandomPartyTest.java	(revision 30)
+++ exampleparties/randompartypy/src/test/java/geniusweb/exampleparties/randompartypy/RandomPartyTest.java	(revision 31)
@@ -33,4 +33,6 @@
 import geniusweb.connection.ConnectionEnd;
 import geniusweb.inform.ActionDone;
+import geniusweb.inform.Agreements;
+import geniusweb.inform.Finished;
 import geniusweb.inform.Inform;
 import geniusweb.inform.Settings;
@@ -133,4 +135,15 @@
 
 	@Test
+	public void testFinished() {
+		party.connect(connection);
+		party.notifyChange(settings);
+
+		party.notifyChange(new Finished(new Agreements()));
+
+		// party should not act at this point
+		assertEquals(0, connection.getActions().size());
+	}
+
+	@Test
 	public void testAgentHasFirstTurn() {
 		party.connect(connection);
Index: exampleparties/simpleboa/pom.xml
===================================================================
--- exampleparties/simpleboa/pom.xml	(revision 30)
+++ exampleparties/simpleboa/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>simpleboaparty</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -116,4 +116,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/simpleshaop/pom.xml
===================================================================
--- exampleparties/simpleshaop/pom.xml	(revision 30)
+++ exampleparties/simpleshaop/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>simpleshaop</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.6</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
Index: exampleparties/timedependentparty/pom.xml
===================================================================
--- exampleparties/timedependentparty/pom.xml	(revision 30)
+++ exampleparties/timedependentparty/pom.xml	(revision 31)
@@ -6,5 +6,5 @@
 	<groupId>geniusweb.exampleparties</groupId>
 	<artifactId>timedependentparty</artifactId>
-	<version>1.5.9</version> <!-- must equal ${geniusweb.version} -->
+	<version>1.6.0</version> <!-- must equal ${geniusweb.version} -->
 	<packaging>jar</packaging>
 
@@ -17,5 +17,5 @@
 		<passwd>${env.ARTIFACTORY_PASS}</passwd>
 		<jackson-2-version>2.9.10</jackson-2-version>
-		<geniusweb.version>1.5.9</geniusweb.version>
+		<geniusweb.version>1.6.0</geniusweb.version>
 	</properties>
 
@@ -180,4 +180,5 @@
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-jar-plugin</artifactId>
+				<version>3.2.0</version>
 				<configuration>
 					<archive>
Index: exampleparties/timedependentparty/src/main/java/geniusweb/exampleparties/timedependentparty/TimeDependentParty.java
===================================================================
--- exampleparties/timedependentparty/src/main/java/geniusweb/exampleparties/timedependentparty/TimeDependentParty.java	(revision 30)
+++ exampleparties/timedependentparty/src/main/java/geniusweb/exampleparties/timedependentparty/TimeDependentParty.java	(revision 31)
@@ -15,4 +15,5 @@
 import geniusweb.actions.Accept;
 import geniusweb.actions.Action;
+import geniusweb.actions.LearningDone;
 import geniusweb.actions.Offer;
 import geniusweb.actions.PartyId;
@@ -47,5 +48,6 @@
  * <p>
  * Supports parameters as follows
- * <table summary="parameters">
+ * <table>
+ * <caption>parameters</caption>
  * <tr>
  * <td>e</td>
@@ -93,5 +95,6 @@
 	@Override
 	public Capabilities getCapabilities() {
-		return new Capabilities(new HashSet<>(Arrays.asList("SAOP", "MOPAC")),
+		return new Capabilities(
+				new HashSet<>(Arrays.asList("SAOP", "MOPAC", "Learn")),
 				Collections.singleton(LinearAdditive.class));
 	}
@@ -102,6 +105,4 @@
 			if (info instanceof Settings) {
 				settings = (Settings) info;
-				this.profileint = ProfileConnectionFactory
-						.create(settings.getProfile().getURI(), getReporter());
 				this.me = settings.getID();
 				this.progress = settings.getProgress();
@@ -116,4 +117,12 @@
 					}
 				}
+				String protocol = settings.getProtocol().getURI().getPath();
+				if ("Learn".equals(protocol)) {
+					getConnection().send(new LearningDone(me));
+				} else {
+					this.profileint = ProfileConnectionFactory.create(
+							settings.getProfile().getURI(), getReporter());
+				}
+
 			} else if (info instanceof ActionDone) {
 				Action otheract = ((ActionDone) info).getAction();
@@ -125,4 +134,5 @@
 			} else if (info instanceof Finished) {
 				getReporter().log(Level.INFO, "Final ourcome:" + info);
+				terminate(); // stop this party and free resources.
 			} else if (info instanceof Voting) {
 				lastvotes = vote((Voting) info);
