Index: issuevalue/src/main/java/geniusweb/issuevalue/Bid.java
===================================================================
--- issuevalue/src/main/java/geniusweb/issuevalue/Bid.java	(revision 53)
+++ issuevalue/src/main/java/geniusweb/issuevalue/Bid.java	(revision 1)
@@ -3,5 +3,4 @@
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -41,20 +40,5 @@
 
 	/**
-	 * Makes partial bid with just 1 issue and value.
-	 * 
-	 * @param issue the issue name
-	 * @param value the {@link Value}
-	 */
-	public Bid(String issue, Value value) {
-		if (issue == null || value == null) {
-			throw new NullPointerException("issue and value must be not =null");
-		}
-
-		issuevalues = new HashMap<>();
-		issuevalues.put(issue, value);
-	}
-
-	/**
-	 * @param issue name of the issue
+	 * @param issue
 	 * @return the value for the given issue, or null if there is no value for
 	 *         the given issue.
@@ -65,5 +49,6 @@
 
 	/**
-	 * @param issue name of the issue
+	 * 
+	 * @param issue
 	 * @return true iff the bid contains a value for the given issue.
 	 */
@@ -74,33 +59,4 @@
 	public Set<String> getIssues() {
 		return Collections.unmodifiableSet(issuevalues.keySet());
-	}
-
-	/**
-	 * Merges this partial bid with another partial bid.
-	 * 
-	 * @param otherbid another partial bid.
-	 * @return a bid with the combined values of both partial bids.
-	 * @throws IllegalArgumentException if issues overlap.
-	 */
-	public Bid merge(Bid otherbid) {
-		Set<String> ourissues = new HashSet<>(issuevalues.keySet());
-		ourissues.retainAll(otherbid.getIssues());
-		if (!ourissues.isEmpty()) {
-			throw new IllegalArgumentException(
-					"Otherbid contains issues that are already set:"
-							+ ourissues);
-		}
-		HashMap<String, Value> newvalues = new HashMap<>(issuevalues);
-		newvalues.putAll(otherbid.issuevalues);
-		return new Bid(newvalues);
-
-	}
-
-	/**
-	 * 
-	 * @return (unmodifyable) map with all issues and values in the bid.
-	 */
-	public Map<String, Value> getIssueValues() {
-		return Collections.unmodifiableMap(issuevalues);
 	}
 
Index: issuevalue/src/main/java/geniusweb/issuevalue/DiscreteValueSet.java
===================================================================
--- issuevalue/src/main/java/geniusweb/issuevalue/DiscreteValueSet.java	(revision 53)
+++ issuevalue/src/main/java/geniusweb/issuevalue/DiscreteValueSet.java	(revision 1)
@@ -11,4 +11,5 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import com.fasterxml.jackson.databind.JsonDeserializer;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@@ -19,4 +20,5 @@
  * set of discrete values
  */
+@JsonTypeName("discreteset")
 // disable the inherited deserializer to prevent getting into infinite loop...
 @JsonDeserialize(using = JsonDeserializer.None.class)
Index: issuevalue/src/main/java/geniusweb/issuevalue/Domain.java
===================================================================
--- issuevalue/src/main/java/geniusweb/issuevalue/Domain.java	(revision 53)
+++ issuevalue/src/main/java/geniusweb/issuevalue/Domain.java	(revision 1)
@@ -12,5 +12,7 @@
 
 /**
- * A dmain description.
+ * A dmain description. Two domains are equal if they have the same issues in
+ * the same order.
+ *
  */
 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
@@ -23,27 +25,26 @@
 	/**
 	 * 
-	 * @param name   a short name for display/toString. This name must contain
-	 *               simple characters only (a-z, A-Z, 0-9).
-	 * @param issues the issues, Map with key: the issue name and value:
-	 *               {@link ValueSet} with the allowed values for the issue.
+	 * @param shortName a short name for display/toString. This name must
+	 *                  contain simple characters only (a-z, A-Z, 0-9).
+	 * @param issues    the issues, list because order may be important.
 	 */
 	@JsonCreator
-	public Domain(@JsonProperty("name") String name,
+	public Domain(@JsonProperty("name") String shortName,
 			@JsonProperty("issuesValues") Map<String, ValueSet> issues) {
 		if (issues == null) {
 			throw new NullPointerException("issues=null");
 		}
-		if (name == null) {
-			throw new NullPointerException("name=null");
+		if (shortName == null) {
+			throw new NullPointerException("shortName=null");
 		}
-		if (!name.matches("[a-zA-Z0-9]+")) {
+		if (!shortName.matches("[a-zA-Z0-9]+")) {
 			throw new IllegalArgumentException(
 					"domain name can have only simple characters but found "
-							+ name);
+							+ shortName);
 		}
 		if (issues.isEmpty()) {
 			throw new IllegalArgumentException("issues is empty set");
 		}
-		this.name = name;
+		this.name = shortName;
 		this.issuesValues = new HashMap<>(issues);
 	}
@@ -72,25 +73,5 @@
 	/**
 	 * 
-	 * @param bid the {@link Bid} to be checked
-	 * @return null if bid is fitting, or a string containing a message
-	 *         explaining why not. A bid is fitting if all issues are in the
-	 *         domain and all issue values are known values.
-	 */
-	public String isFitting(Bid bid) {
-		for (String issue : bid.getIssues()) {
-			if (!(issuesValues.containsKey(issue)))
-				return "bid " + bid + " refers to non-domain issue '" + issue
-						+ "'";
-			if (!issuesValues.get(issue).contains(bid.getValue(issue))) {
-				return "issue '" + issue + "' in bid has illegal value "
-						+ bid.getValue(issue);
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * 
-	 * @param bid a Bid
+	 * @param domain the domain to check the bid in
 	 * @return null if this bid is complete, or an error message explaining why
 	 *         the bid is not complete. Complete means that the bid contains a
@@ -104,5 +85,11 @@
 					+ issuesValues.keySet() + ")";
 		}
-		return isFitting(bid);
+		for (String issue : getIssues()) {
+			if (!issuesValues.get(issue).contains(bid.getValue(issue))) {
+				return "bid issue " + issue + " has illegal value "
+						+ bid.getValue(issue);
+			}
+		}
+		return null;
 	}
 
Index: issuevalue/src/main/java/geniusweb/issuevalue/NumberValue.java
===================================================================
--- issuevalue/src/main/java/geniusweb/issuevalue/NumberValue.java	(revision 53)
+++ issuevalue/src/main/java/geniusweb/issuevalue/NumberValue.java	(revision 1)
@@ -32,10 +32,8 @@
 	@Override
 	public int hashCode() {
-		// WORKAROUND FOR BigDecimal hashCode. NOT auto generated.
-		// Very large numbers and numbers that differ only in a fraction
-		// beyond reach of double may get the same hashcode,
-		// but this is not an issue as equal hashcode only indicates that
-		// numbers MAY be equal.
-		return Double.hashCode(value.doubleValue());
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((value == null) ? 0 : value.hashCode());
+		return result;
 	}
 
@@ -52,6 +50,5 @@
 			if (other.value != null)
 				return false;
-		} else if (value.compareTo(other.value) != 0)
-			// MANUAL FIX, DO NOT USE value.equals
+		} else if (!value.equals(other.value))
 			return false;
 		return true;
Index: issuevalue/src/main/java/geniusweb/issuevalue/NumberValueSet.java
===================================================================
--- issuevalue/src/main/java/geniusweb/issuevalue/NumberValueSet.java	(revision 53)
+++ issuevalue/src/main/java/geniusweb/issuevalue/NumberValueSet.java	(revision 1)
@@ -9,4 +9,5 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeName;
 import com.fasterxml.jackson.databind.JsonDeserializer;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@@ -17,4 +18,5 @@
  * number range from low to high with given step size
  */
+@JsonTypeName("numberset")
 // disable the inherited deserializer to prevent getting into infinite loop...
 @JsonDeserialize(using = JsonDeserializer.None.class)
@@ -58,7 +60,4 @@
 	@Override
 	public NumberValue get(BigInteger index) {
-		if (index.compareTo(size()) > 0) {
-			return null;
-		}
 		return new NumberValue(range.get(index));
 	}
Index: issuevalue/src/main/java/geniusweb/issuevalue/Value.java
===================================================================
--- issuevalue/src/main/java/geniusweb/issuevalue/Value.java	(revision 53)
+++ issuevalue/src/main/java/geniusweb/issuevalue/Value.java	(revision 1)
@@ -19,8 +19,4 @@
 @JsonDeserialize(using = ValueDeserializer.class)
 public interface Value {
-	/**
-	 * @return the contained value (String, BigDecimal)
-	 */
-	public Object getValue();
 
 }
Index: issuevalue/src/main/java/geniusweb/issuevalue/ValueSet.java
===================================================================
--- issuevalue/src/main/java/geniusweb/issuevalue/ValueSet.java	(revision 53)
+++ issuevalue/src/main/java/geniusweb/issuevalue/ValueSet.java	(revision 1)
@@ -17,8 +17,8 @@
  * by a String)).
  * 
- * Value is the type of objects in this value set. We do not implement ValueSet
- * right away because types are lost at runtime. Implementing separate classes
- * for implementing the ValueSet ensures we can get back the type at runtime.
- * immutable. Thread safe.
+ * @param <T> type of objects in this value set. We do not implement ValueSet
+ *        right away because types are lost at runtime. Implementing separate
+ *        classes for implementing the ValueSet ensures we can get back the type
+ *        at runtime. immutable. Thread safe.
  */
 @JsonDeserialize(using = ValueSetDeserializer.class)
@@ -62,6 +62,5 @@
 			return codec.treeToValue(node, DiscreteValueSet.class);
 		}
-		throw new IllegalArgumentException(
-				"Expected 'range' or 'values' property for ValueSet contents");
+		throw new IllegalArgumentException("Expected 'range' or 'values' property for ValueSet contents");
 	}
 
Index: issuevalue/src/test/java/geniusweb/issuevalue/BidTest.java
===================================================================
--- issuevalue/src/test/java/geniusweb/issuevalue/BidTest.java	(revision 53)
+++ issuevalue/src/test/java/geniusweb/issuevalue/BidTest.java	(revision 1)
@@ -8,4 +8,5 @@
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -16,4 +17,8 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import geniusweb.issuevalue.Bid;
+import geniusweb.issuevalue.DiscreteValue;
+import geniusweb.issuevalue.NumberValue;
+import geniusweb.issuevalue.Value;
 import tudelft.utilities.junit.GeneralTests;
 
@@ -25,8 +30,7 @@
 	private final static String ISSUE2 = "issue2";
 	private final static Value VALUE2 = new NumberValue("10");
-	private final static Value VALUE3 = new NumberValue("1000");
-	private final static Value VALUE3b = new NumberValue("1e+3");
+	private final static List<List<Bid>> list = new LinkedList<>();
 
-	private final static Bid bid, bid1, bidb, bidc, bidd, bidd2;
+	private final static Bid bid, bid1, bidb, bidc;
 	static {
 		Map<String, Value> issuevalues = new HashMap<>();
@@ -56,16 +60,13 @@
 		bidc = new Bid(issuevaluesc);
 
-		Map<String, Value> issuevaluesd = new HashMap<>();
-		issuevaluesd.put(ISSUE1, VALUE3);
-		bidd = new Bid(issuevaluesd);
-		issuevaluesd.put(ISSUE1, VALUE3b);
-		bidd2 = new Bid(issuevaluesd);
-
+		list.add(Arrays.asList(bid, bid1));
+		list.add(Arrays.asList(bidb));
+		list.add(Arrays.asList(bidc));
 	}
 
 	@Override
 	public List<List<Bid>> getGeneralTestData() {
-		return Arrays.asList(Arrays.asList(bid, bid1), Arrays.asList(bidb),
-				Arrays.asList(bidc), Arrays.asList(bidd, bidd2));
+
+		return list;
 	}
 
@@ -75,6 +76,7 @@
 				"Bid\\{issue3=9012345678901234567.89, issue2=1, issue1=\"b\"\\}",
 				"Bid\\{issue2=1, issue1=\"b\"\\}",
-				"Bid\\{issue2=10, issue1=\"value1\"\\}",
-				"Bid\\{issue1=1...\\}");
+				"Bid\\{issue2=10, issue1=\"value1\"\\}"
+
+		);
 	}
 
@@ -85,5 +87,4 @@
 	}
 
-	@SuppressWarnings("unused")
 	@Test
 	public void bidTestSimple() {
@@ -92,5 +93,4 @@
 	}
 
-	@SuppressWarnings("unused")
 	@Test(expected = IllegalArgumentException.class)
 	public void bidTestNull() {
@@ -100,5 +100,4 @@
 	}
 
-	@SuppressWarnings("unused")
 	@Test
 	public void bidTestOkIssueValue() {
@@ -126,54 +125,3 @@
 	}
 
-	@Test
-	public void testMerge() {
-		Map<String, Value> issuevalues = new HashMap<>();
-		issuevalues.put(ISSUE1, VALUE1);
-		Bid partial1 = new Bid(issuevalues);
-
-		issuevalues = new HashMap<>();
-		issuevalues.put(ISSUE2, VALUE2);
-		Bid partial2 = new Bid(issuevalues);
-
-		Bid mergedbid = partial1.merge(partial2);
-		assertEquals(bidc, mergedbid);
-	}
-
-	@Test(expected = IllegalArgumentException.class)
-	public void testMergeIssuesOverlap() {
-		Map<String, Value> issuevalues = new HashMap<>();
-		issuevalues.put(ISSUE1, VALUE1);
-		Bid partial1 = new Bid(issuevalues);
-
-		issuevalues = new HashMap<>();
-		issuevalues.put(ISSUE1, VALUE2);
-		Bid partial2 = new Bid(issuevalues);
-
-		partial1.merge(partial2);
-	}
-
-	@SuppressWarnings("unused")
-	@Test
-	public void smokeTestConstructor2() {
-		new Bid("issue", new DiscreteValue("dss"));
-	}
-
-	@SuppressWarnings("unused")
-	@Test
-	public void smokeTestConstructor2b() {
-		new Bid("issue", new NumberValue("0.5"));
-	}
-
-	@SuppressWarnings("unused")
-	@Test(expected = NullPointerException.class)
-	public void smokeTestConstructor2Null1() {
-		new Bid(null, new DiscreteValue("dss"));
-	}
-
-	@SuppressWarnings("unused")
-	@Test(expected = NullPointerException.class)
-	public void smokeTestConstructor2Null2() {
-		new Bid("issue", null);
-	}
-
 }
Index: issuevalue/src/test/java/geniusweb/issuevalue/DiscreteValueSetTest.java
===================================================================
--- issuevalue/src/test/java/geniusweb/issuevalue/DiscreteValueSetTest.java	(revision 53)
+++ issuevalue/src/test/java/geniusweb/issuevalue/DiscreteValueSetTest.java	(revision 1)
@@ -19,4 +19,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import geniusweb.issuevalue.DiscreteValue;
+import geniusweb.issuevalue.DiscreteValueSet;
+
 public class DiscreteValueSetTest {
 
@@ -32,6 +35,5 @@
 			valuesReverse);
 	private static final String asString = "{\"values\":[\"a\",\"b\"]}";
-	// private static final String asString = "{\"DiscreteValueSet
-	// \":[\"a\",\"b\"]}";
+	// private static final String asString = "{\"discreteset\":[\"a\",\"b\"]}";
 	private static final String asString1 = "[\"a\",\"b\"]";
 
@@ -39,8 +41,8 @@
 	// parsed as discrete values.
 	private static final String discretenumbers = "{\"values\":[\"0\",\"1\"]}";
-	private static final ObjectMapper jackson = new ObjectMapper();
 
 	@Test
 	public void testSerialize() throws JsonProcessingException {
+		ObjectMapper jackson = new ObjectMapper();
 
 		String json = jackson.writeValueAsString(set);
@@ -52,4 +54,5 @@
 	public void testDeserialize()
 			throws JsonParseException, JsonMappingException, IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		DiscreteValueSet p = jackson.readValue(asString,
 				DiscreteValueSet.class);
@@ -61,4 +64,5 @@
 	public void testDeserializeNumberValues()
 			throws JsonParseException, JsonMappingException, IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		DiscreteValueSet p = jackson.readValue(discretenumbers,
 				DiscreteValueSet.class);
Index: issuevalue/src/test/java/geniusweb/issuevalue/DiscreteValueTest.java
===================================================================
--- issuevalue/src/test/java/geniusweb/issuevalue/DiscreteValueTest.java	(revision 53)
+++ issuevalue/src/test/java/geniusweb/issuevalue/DiscreteValueTest.java	(revision 1)
@@ -13,15 +13,17 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import geniusweb.issuevalue.DiscreteValue;
+import geniusweb.issuevalue.Value;
 import tudelft.utilities.junit.GeneralTests;
 
 public class DiscreteValueTest extends GeneralTests<DiscreteValue> {
-	private final DiscreteValue value = new DiscreteValue("a");
-	private final DiscreteValue value1 = new DiscreteValue("a");
-	private final DiscreteValue valueb = new DiscreteValue("b");
-	private final String serialized = "\"a\"";
-	private static final ObjectMapper jackson = new ObjectMapper();
+	private DiscreteValue value = new DiscreteValue("a");
+	private DiscreteValue value1 = new DiscreteValue("a");
+	private DiscreteValue valueb = new DiscreteValue("b");
+	private String serialized = "\"a\"";
 
 	@Test
 	public void testSerialize() throws JsonProcessingException {
+		ObjectMapper jackson = new ObjectMapper();
 		assertEquals(serialized, jackson.writeValueAsString(value));
 	}
@@ -29,4 +31,5 @@
 	@Test
 	public void testDeserialize() throws IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		assertEquals(value, jackson.readValue(serialized, DiscreteValue.class));
 	}
@@ -34,4 +37,5 @@
 	@Test
 	public void testDeserializeFromValue() throws IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		assertEquals(value, jackson.readValue(serialized, Value.class));
 	}
@@ -39,4 +43,5 @@
 	@Override
 	public List<List<DiscreteValue>> getGeneralTestData() {
+
 		List<List<DiscreteValue>> list = new LinkedList<>();
 		list.add(Arrays.asList(value, value1));
Index: issuevalue/src/test/java/geniusweb/issuevalue/DomainTest.java
===================================================================
--- issuevalue/src/test/java/geniusweb/issuevalue/DomainTest.java	(revision 53)
+++ issuevalue/src/test/java/geniusweb/issuevalue/DomainTest.java	(revision 1)
@@ -2,5 +2,4 @@
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
@@ -22,13 +21,16 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import geniusweb.issuevalue.Bid;
+import geniusweb.issuevalue.DiscreteValue;
+import geniusweb.issuevalue.DiscreteValueSet;
+import geniusweb.issuevalue.Domain;
+import geniusweb.issuevalue.NumberValue;
+import geniusweb.issuevalue.NumberValueSet;
+import geniusweb.issuevalue.ValueSet;
 import tudelft.utilities.junit.GeneralTests;
 
 public class DomainTest extends GeneralTests<Domain> {
-	private static final BigDecimal TWO = new BigDecimal("2");
-	private static final BigDecimal THREE = new BigDecimal("3");
-
 	private static final DiscreteValue I1V2 = new DiscreteValue("i1v2");
 	private static final DiscreteValue I1V1 = new DiscreteValue("i1v1");
-	private static final NumberValue I2V1 = new NumberValue(TWO);
 	private static final String DOMAINNAME = "testdomain";
 	private static final String ISSUE1 = "issue1";
@@ -36,5 +38,5 @@
 	private static final String ISSUE3 = "issue3";
 	private static final ObjectMapper jackson = new ObjectMapper();
-	private static final String domainstring = "{\"name\":\"testdomain\",\"issuesValues\":{\"issue2\":{\"range\":{\"low\":2,\"high\":3,\"step\":0.22}},\"issue1\":{\"values\":[\"i1v1\",\"i1v2\"]}}}";
+	private static final String domainstring = "{\"name\":\"testdomain\",\"issuesValues\":{\"issue2\":{\"range\":[\"2\",\"3\",\"0.22\"]},\"issue1\":{\"values\":[\"i1v1\",\"i1v2\"]}}}";
 
 	private static final String jobsstring = "{\"name\":\"jobs\","
@@ -50,4 +52,7 @@
 	private static final ValueSet values1;
 	private static final ValueSet values2;
+	private static final BigDecimal TWO = new BigDecimal("2");
+	private static final BigDecimal THREE = new BigDecimal("3");
+
 	private static final Domain domain, domain1, domain2, domain3;
 
@@ -150,5 +155,5 @@
 		when(bid.getValue(ISSUE2)).thenReturn(new NumberValue(THREE));
 		assertThat(domain.isComplete(bid),
-				new PatternMatch("issue 'issue2' in bid has illegal value 3"));
+				new PatternMatch("bid issue issue2 has illegal value 3"));
 	}
 
@@ -176,29 +181,3 @@
 	}
 
-	@Test
-	public void testIsFittingPartialBid() {
-		Bid bid = new Bid(ISSUE1, I1V1);
-		assertNull(domain.isFitting(bid));
-	}
-
-	@Test
-	public void testIsFittingWrongTypeBid() {
-		Bid bid = new Bid(ISSUE1, I2V1);
-		assertThat(domain.isFitting(bid),
-				new PatternMatch("issue 'issue1' in bid has illegal value 2"));
-	}
-
-	@Test
-	public void testIsFittingNonsenseValue() {
-		Bid bid = new Bid(ISSUE1, new DiscreteValue("nonsense"));
-		assertThat(domain.isFitting(bid), new PatternMatch(
-				"issue 'issue1' in bid has illegal value \"nonsense\""));
-	}
-
-	@Test
-	public void testIsFittingNonsenseIssue() {
-		Bid bid = new Bid("nonsense", I1V1);
-		assertThat(domain.isFitting(bid), new PatternMatch(
-				"bid .* refers to non-domain issue 'nonsense'"));
-	}
 }
Index: issuevalue/src/test/java/geniusweb/issuevalue/NumberValueSetTest.java
===================================================================
--- issuevalue/src/test/java/geniusweb/issuevalue/NumberValueSetTest.java	(revision 53)
+++ issuevalue/src/test/java/geniusweb/issuevalue/NumberValueSetTest.java	(revision 1)
@@ -16,4 +16,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import geniusweb.issuevalue.NumberValue;
+import geniusweb.issuevalue.NumberValueSet;
+import geniusweb.issuevalue.ValueSet;
 import tudelft.utilities.immutablelist.Range;
 
@@ -23,16 +26,14 @@
 	private static final BigDecimal TWELVE_SIX = new BigDecimal("12.6");
 	private static final BigDecimal TWELVE_TWO = new BigDecimal("12.2");
-	private final static NumberValueSet set = new NumberValueSet(TWELVE_TWO,
-			TWELVE_SIX, ZERO_THREE);
-	private final static NumberValueSet set1 = new NumberValueSet(TWELVE_TWO,
-			TWELVE_SIX, ZERO_THREE);
-	private final static NumberValueSet setb = new NumberValueSet(TWELVE_TWO,
-			new BigDecimal("12.6000000000001"), ZERO_THREE);
-	private final static NumberValueSet set10 = new NumberValueSet(
-			BigDecimal.ZERO, BigDecimal.ONE, new BigDecimal("0.1"));
+	private final static NumberValueSet set = new NumberValueSet(TWELVE_TWO, TWELVE_SIX, ZERO_THREE);
+	private final static NumberValueSet set1 = new NumberValueSet(TWELVE_TWO, TWELVE_SIX, ZERO_THREE);
+	private final static NumberValueSet setb = new NumberValueSet(TWELVE_TWO, new BigDecimal("12.6000000000001"),
+			ZERO_THREE);
+	private final static NumberValueSet set10 = new NumberValueSet(BigDecimal.ZERO, BigDecimal.ONE,
+			new BigDecimal("0.1"));
 
-	private final String asString = "{\"range\":{\"low\":12.2,\"high\":12.6,\"step\":0.3}}";
-	private final static NumberValueSet bigset = new NumberValueSet(
-			BigDecimal.ZERO, BigDecimal.TEN, new BigDecimal("0.00003"));
+	private final String asString = "{\"range\":[\"12.2\",\"12.6\",\"0.3\"]}";
+	private final static NumberValueSet bigset = new NumberValueSet(BigDecimal.ZERO, BigDecimal.TEN,
+			new BigDecimal("0.00003"));
 
 	@Test(expected = IllegalArgumentException.class)
@@ -43,12 +44,10 @@
 	@Test(expected = IllegalArgumentException.class)
 	public void testConstructor2() {
-		new NumberValueSet(BigDecimal.ZERO, BigDecimal.TEN,
-				new BigDecimal("-1"));
+		new NumberValueSet(BigDecimal.ZERO, BigDecimal.TEN, new BigDecimal("-1"));
 	}
 
 	@Test
 	public void testIterator() {
-		assertEquals(new NumberValue(BigDecimal.ZERO),
-				bigset.iterator().next());
+		assertEquals(new NumberValue(BigDecimal.ZERO), bigset.iterator().next());
 	}
 
@@ -63,6 +62,5 @@
 
 	@Test
-	public void testDeserialize()
-			throws JsonParseException, JsonMappingException, IOException {
+	public void testDeserialize() throws JsonParseException, JsonMappingException, IOException {
 		ObjectMapper jackson = new ObjectMapper();
 		ValueSet p = jackson.readValue(asString, NumberValueSet.class);
@@ -97,6 +95,5 @@
 	@Test
 	public void getRangeTest() {
-		assertEquals(new Range(TWELVE_TWO, TWELVE_SIX, ZERO_THREE),
-				set.getRange());
+		assertEquals(new Range(TWELVE_TWO, TWELVE_SIX, ZERO_THREE), set.getRange());
 	}
 
@@ -105,6 +102,5 @@
 		assertEquals(new NumberValue(TWELVE_TWO), set.get(BigInteger.ZERO));
 		assertEquals(new NumberValue(TWELVE_TWO), set.get(0));
-		assertEquals(new NumberValue(TWELVE_TWO.add(ZERO_THREE)),
-				set.get(BigInteger.ONE));
+		assertEquals(new NumberValue(TWELVE_TWO.add(ZERO_THREE)), set.get(BigInteger.ONE));
 	}
 
Index: issuevalue/src/test/java/geniusweb/issuevalue/NumberValueTest.java
===================================================================
--- issuevalue/src/test/java/geniusweb/issuevalue/NumberValueTest.java	(revision 53)
+++ issuevalue/src/test/java/geniusweb/issuevalue/NumberValueTest.java	(revision 1)
@@ -7,4 +7,5 @@
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.LinkedList;
 import java.util.List;
 
@@ -16,32 +17,33 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import geniusweb.issuevalue.NumberValue;
+import geniusweb.issuevalue.Value;
 import tudelft.utilities.junit.GeneralTests;
 
 public class NumberValueTest extends GeneralTests<NumberValue> {
-	private final NumberValue value = new NumberValue("12.31");
-	private final NumberValue value1 = new NumberValue("12.31");
-	private final NumberValue valueb = new NumberValue("12.3100000000001");
-	private final NumberValue valuec = new NumberValue("1000");
-	private final NumberValue valuec2 = new NumberValue("1e+3");
-	private final String serialized = "12.31";
+	private NumberValue value = new NumberValue("12.31");
+	private NumberValue value1 = new NumberValue("12.31");
+	private NumberValue valueb = new NumberValue("12.310000000000000001");
+	private String serialized = "12.31";
 
-	private final String bigserialized = "8748703924870439218876954320948372058";
-	private final NumberValue bigvalue = new NumberValue(bigserialized);
-	private static final ObjectMapper jackson = new ObjectMapper();
+	private String bigserialized = "8748703924870439218876954320948372058";
+	private NumberValue bigvalue = new NumberValue(bigserialized);
 
 	@Override
 	public List<List<NumberValue>> getGeneralTestData() {
-		return Arrays.asList(Arrays.asList(value, value1),
-				Arrays.asList(valueb), Arrays.asList(valuec, valuec2));
+		List<List<NumberValue>> list = new LinkedList<>();
+		list.add(Arrays.asList(value, value1));
+		list.add(Arrays.asList(valueb));
+		return list;
 	}
 
 	@Override
 	public List<String> getGeneralTestStrings() {
-		// 1000 and 1e+3 are bot ok
-		return Arrays.asList("12.31", "12.3100000000001", "1...");
+		return Arrays.asList("12.31", "12.310000000000000001");
 	}
 
 	@Test
 	public void testSerialize() throws JsonProcessingException {
+		ObjectMapper jackson = new ObjectMapper();
 		assertEquals(serialized, jackson.writeValueAsString(value));
 	}
@@ -49,4 +51,5 @@
 	@Test
 	public void testDeserialize() throws IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		assertEquals(value, jackson.readValue(serialized, NumberValue.class));
 
@@ -55,4 +58,5 @@
 	@Test
 	public void testDeserializeFromValue() throws IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		assertEquals(value, jackson.readValue(serialized, Value.class));
 
@@ -61,4 +65,5 @@
 	@Test
 	public void testBigSerialize() throws JsonProcessingException {
+		ObjectMapper jackson = new ObjectMapper();
 		assertEquals(bigserialized, jackson.writeValueAsString(bigvalue));
 	}
@@ -66,4 +71,5 @@
 	@Test
 	public void testBigDeserialize() throws IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		assertEquals(bigvalue,
 				jackson.readValue(bigserialized, NumberValue.class));
@@ -73,4 +79,5 @@
 	@Test
 	public void testSerializeShorts() throws IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		System.out.println(
 				jackson.writeValueAsString(new short[] { 1, 2, 3, 4, 5 }));
@@ -80,7 +87,6 @@
 	@Test
 	public void testDeserializeShorts() throws IOException {
-		@SuppressWarnings("unchecked")
-		ArrayList<Integer> list = jackson.readValue("[1,2,3,4,5]",
-				ArrayList.class);
+		ObjectMapper jackson = new ObjectMapper();
+		ArrayList list = jackson.readValue("[1,2,3,4,5]", ArrayList.class);
 		System.out.println(list);
 		System.out.println(list.get(0).getClass());
@@ -90,6 +96,6 @@
 	@Test
 	public void testDeserializeMix() throws IOException {
-		@SuppressWarnings("unchecked")
-		ArrayList<Object> list = jackson.readValue("[\"short\",1,2,3,4,5]",
+		ObjectMapper jackson = new ObjectMapper();
+		ArrayList list = jackson.readValue("[\"short\",1,2,3,4,5]",
 				ArrayList.class);
 		System.out.println(list);
@@ -105,4 +111,5 @@
 	public void testDeserializePlainNumber()
 			throws JsonParseException, JsonMappingException, IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		String valstr = "483958743698732691487326987569213874694328974329874328947320984372498327493827432987231874681273648127";
 		BigDecimal val = jackson.readValue(valstr, BigDecimal.class);
@@ -112,4 +119,5 @@
 	@Test
 	public void testNumberBlab() throws IOException {
+		ObjectMapper jackson = new ObjectMapper();
 		// jackson.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
 		assertEquals(value, jackson.readValue("12.31", Value.class));
@@ -117,12 +125,3 @@
 	}
 
-	@Test
-	public void testDeserializeScientificNotation()
-			throws JsonParseException, JsonMappingException, IOException {
-		String valstr = "9E+2";
-		Value val = jackson.readValue(valstr, Value.class);
-		assertEquals(valstr, val.toString());
-		assertEquals(val, new NumberValue(new BigDecimal("900")));
-	}
-
 }
