Index: timeline/src/main/java/geniusweb/progress/Progress.java
===================================================================
--- timeline/src/main/java/geniusweb/progress/Progress.java	(revision 52)
+++ timeline/src/main/java/geniusweb/progress/Progress.java	(revision 1)
@@ -34,5 +34,5 @@
 	 *         eye on {@link #getTerminationTime()}.
 	 */
-	Double get(Long currentTimeMs);
+	Double get(long currentTimeMs);
 
 	/**
@@ -51,4 +51,4 @@
 	 * @return true iff the progress has passed the deadline.
 	 */
-	boolean isPastDeadline(Long currentTimeMs);
+	boolean isPastDeadline(long currentTimeMs);
 }
Index: timeline/src/main/java/geniusweb/progress/ProgressRounds.java
===================================================================
--- timeline/src/main/java/geniusweb/progress/ProgressRounds.java	(revision 52)
+++ timeline/src/main/java/geniusweb/progress/ProgressRounds.java	(revision 1)
@@ -5,9 +5,11 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
 
 /**
  * progress in terms of number of rounds. The round has to be updated by the
- * user of this class, calling {@link #advance()}. immutable.
+ * user of this class, calling {@link #advance()}.
  */
+@JsonTypeName("rounds")
 public class ProgressRounds implements Progress {
 
@@ -45,28 +47,6 @@
 	}
 
-	/**
-	 * 
-	 * @return the current round. First round is 0. It is recommended that you
-	 *         use the functions in {@link Progress} instead of this, to ensure
-	 *         your code works with all implementations of Progress including
-	 *         future developments.
-	 */
-	public Integer getCurrentRound() {
-		return currentRound;
-	}
-
-	/**
-	 * 
-	 * @return total number of rounds. It is recommended that you use the
-	 *         functions in {@link Progress} instead of this, to ensure your
-	 *         code works with all implementations of Progress including future
-	 *         developments.
-	 */
-	public Integer getTotalRounds() {
-		return duration;
-	}
-
 	@Override
-	public Double get(Long currentTimeMs) {
+	public Double get(long currentTimeMs) {
 		// deadline and current both are limited to MAXINT is 32 bits; double
 		// fits 52
@@ -81,5 +61,5 @@
 
 	@Override
-	public boolean isPastDeadline(Long currentTimeMs) {
+	public boolean isPastDeadline(long currentTimeMs) {
 		return currentRound >= duration || currentTimeMs > endtime.getTime();
 	}
Index: timeline/src/main/java/geniusweb/progress/ProgressTime.java
===================================================================
--- timeline/src/main/java/geniusweb/progress/ProgressTime.java	(revision 52)
+++ timeline/src/main/java/geniusweb/progress/ProgressTime.java	(revision 1)
@@ -5,4 +5,5 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
 
 import geniusweb.deadline.DeadlineTime;
@@ -14,4 +15,5 @@
  *
  */
+@JsonTypeName("time")
 public class ProgressTime implements Progress {
 
@@ -28,10 +30,16 @@
 	private final Long duration;
 
+	@SuppressWarnings("unused") // for deserializer
+	private ProgressTime() {
+		start = null;
+		duration = null;
+	}
+
 	/**
 	 * 
-	 * @param d     the duration, eg {@link DeadlineTime#getDuration()}. Must be
-	 *              &gt; 0.
-	 * @param start the start Date (unix time in millisecs since 1970). See
-	 *              {@link System#currentTimeMillis()}.
+	 * @param duration the duration, eg {@link DeadlineTime#getDuration()}. Must
+	 *                 be >0.
+	 * @param start    the start Date (unix time in millisecs since 1970). See
+	 *                 {@link System#currentTimeMillis()}.
 	 */
 	@JsonCreator
@@ -43,5 +51,5 @@
 
 	@Override
-	public Double get(Long currentTimeMs) {
+	public Double get(long currentTimeMs) {
 		long delta = currentTimeMs - start.getTime();
 		// double should have ~53 digits of precision, and we're computing
@@ -58,5 +66,5 @@
 
 	@Override
-	public boolean isPastDeadline(Long currentTimeMs) {
+	public boolean isPastDeadline(long currentTimeMs) {
 		return currentTimeMs > start.getTime() + duration;
 	}
