Index: profile/src/test/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilitiesTest.java
===================================================================
--- profile/src/test/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilitiesTest.java	(revision 3)
+++ profile/src/test/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilitiesTest.java	(revision 7)
@@ -2,5 +2,7 @@
 
 import static org.junit.Assert.assertEquals;
-
+import static org.junit.Assert.assertFalse;
+
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.Arrays;
@@ -10,4 +12,8 @@
 
 import org.junit.Test;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 import geniusweb.issuevalue.DiscreteValue;
@@ -35,4 +41,5 @@
 	private final static DiscreteValueSetUtilities utils, utils1, utilsb,
 			utils1b, utilsc1, utilsc2;
+	private static final ObjectMapper jackson = new ObjectMapper();
 
 	static {
@@ -179,3 +186,17 @@
 
 	}
+
+	@Test
+	public void testIsFittingWrongIssues()
+			throws JsonParseException, JsonMappingException, IOException {
+		// Notice, party tent has extra single quote in the valuesstr.
+		String valuesstr = "{\"values\": [\"Party Tent'\",\"Your Dorm\", \"Party Room\", \"Ballroom\" ]}";
+		String utilstring = "{\"discreteutils\": {\"valueUtilities\": {\"Party Tent\": 0.52,\"Your Dorm\": 0.23,\"Party Room\": 0.99,\"Ballroom\": 0.77}}}";
+		ValueSetUtilities valueutils = jackson.readValue(utilstring,
+				ValueSetUtilities.class);
+		ValueSet values = jackson.readValue(valuesstr, ValueSet.class);
+		System.out.println(valueutils.isFitting(values));
+		assertFalse(valueutils.isFitting(values).isEmpty());
+
+	}
 }
Index: profile/src/test/java/geniusweb/profile/utilityspace/LinearAdditiveSerializationTest.java
===================================================================
--- profile/src/test/java/geniusweb/profile/utilityspace/LinearAdditiveSerializationTest.java	(revision 3)
+++ profile/src/test/java/geniusweb/profile/utilityspace/LinearAdditiveSerializationTest.java	(revision 7)
@@ -20,11 +20,9 @@
 import geniusweb.issuevalue.DiscreteValueSet;
 import geniusweb.issuevalue.Domain;
+import geniusweb.issuevalue.NumberValue;
+import geniusweb.issuevalue.NumberValueSet;
 import geniusweb.issuevalue.Value;
 import geniusweb.issuevalue.ValueSet;
 import geniusweb.profile.Profile;
-import geniusweb.profile.utilityspace.DiscreteValueSetUtilities;
-import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
-import geniusweb.profile.utilityspace.NumberValueSetUtilities;
-import geniusweb.profile.utilityspace.ValueSetUtilities;
 
 public class LinearAdditiveSerializationTest {
@@ -39,6 +37,6 @@
 	private DiscreteValue i1v1 = new DiscreteValue("issue1value1");
 	private DiscreteValue i1v2 = new DiscreteValue("issue1value2");
-	private DiscreteValue i2v1 = new DiscreteValue("issue2value1");
-	private DiscreteValue i2v2 = new DiscreteValue("issue2value2");
+	private NumberValue i2v1 = new NumberValue("0.36");
+	private NumberValue i2v2 = new NumberValue("0.71");
 	private Domain domain;
 
@@ -47,16 +45,9 @@
 	private BigDecimal TWELVE = new BigDecimal("12");
 	private BigDecimal EIGHTEEN = new BigDecimal("18");
+	private static final ObjectMapper jackson = new ObjectMapper();
 
 	private LinearAdditiveUtilitySpace space;
-	private String serialized = "{\"LinearAdditiveUtilitySpace\":{"
-			+ "\"domain\":{\"name\":\"test\","
-			+ "\"issuesValues\":{\"issue2\":{\"values\":[\"issue2value1\",\"issue2value2\"]},"
-			+ "\"issue1\":{\"values\":[\"issue1value1\",\"issue1value2\"]}}},"
-			+ "\"name\":\"testprofile\"," + "\"issueUtilities\":"
-			+ "{\"issue2\":{\"numberutils\":{\"lowValue\":12,\"lowUtility\":0.3,\"highValue\":18,\"highUtility\":0.6}},"
-			+ "\"issue1\":{\"discreteutils\":{\"valueUtilities\":{\"issue1value1\":0.2,\"issue1value2\":0.3}}}},"
-			+ "\"issueWeights\":{\"issue2\":0.4,\"issue1\":0.6},"
-			+ "\"reservationBid\":{\"issuevalues\":{\"issue2\":\"issue2value1\",\"issue1\":\"issue1value2\"}}"
-			+ "}" + "}";
+
+	private String serialized = "{\"LinearAdditiveUtilitySpace\":{\"domain\":{\"name\":\"test\",\"issuesValues\":{\"issue2\":{\"range\":[12,18,1]},\"issue1\":{\"values\":[\"issue1value1\",\"issue1value2\"]}}},\"name\":\"testprofile\",\"issueUtilities\":{\"issue2\":{\"numberutils\":{\"lowValue\":12,\"lowUtility\":0.3,\"highValue\":18,\"highUtility\":0.6}},\"issue1\":{\"discreteutils\":{\"valueUtilities\":{\"issue1value1\":0.2,\"issue1value2\":0.3}}}},\"issueWeights\":{\"issue2\":0.4,\"issue1\":0.6},\"reservationBid\":{\"issuevalues\":{\"issue2\":0.36,\"issue1\":\"issue1value2\"}}}}";
 
 	private String jobsjson = "{\"LinearAdditiveUtilitySpace\":{\"issueUtilities\":{"
@@ -96,5 +87,5 @@
 		Map<String, ValueSet> values = new HashMap<>();
 		values.put(ISS1, new DiscreteValueSet(Arrays.asList(i1v1, i1v2)));
-		values.put(ISS2, new DiscreteValueSet(Arrays.asList(i2v1, i2v2)));
+		values.put(ISS2, new NumberValueSet(TWELVE, EIGHTEEN, BigDecimal.ONE));
 		domain = new Domain("test", values);
 
@@ -135,5 +126,4 @@
 	@Test
 	public void testDeserializeFromValue() throws IOException {
-		ObjectMapper jackson = new ObjectMapper();
 		assertEquals(space, jackson.readValue(serialized, Profile.class));
 	}
@@ -141,5 +131,4 @@
 	@Test
 	public void testDeserializeJobs() throws IOException {
-		ObjectMapper jackson = new ObjectMapper();
 		Profile jobs = jackson.readValue(jobsjson, Profile.class);
 	}
Index: profile/src/test/java/geniusweb/profile/utilityspace/LinearAdditiveTest.java
===================================================================
--- profile/src/test/java/geniusweb/profile/utilityspace/LinearAdditiveTest.java	(revision 3)
+++ profile/src/test/java/geniusweb/profile/utilityspace/LinearAdditiveTest.java	(revision 7)
@@ -6,5 +6,9 @@
 import static org.mockito.Mockito.when;
 
+import java.io.IOException;
 import java.math.BigDecimal;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -14,4 +18,7 @@
 
 import org.junit.Test;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
 
 import geniusweb.issuevalue.Bid;
@@ -21,7 +28,4 @@
 import geniusweb.issuevalue.Value;
 import geniusweb.issuevalue.ValueSet;
-import geniusweb.profile.utilityspace.DiscreteValueSetUtilities;
-import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
-import geniusweb.profile.utilityspace.ValueSetUtilities;
 import tudelft.utilities.junit.GeneralTests;
 
@@ -54,4 +58,5 @@
 
 	private static final ValueSetUtilities value1Utils;
+	private static final ObjectMapper jackson = new ObjectMapper();
 
 	static {
@@ -265,3 +270,12 @@
 				WEIGHT1.multiply(I1V1UTIL).compareTo(space.getUtility(bid)));
 	}
+
+	@Test(expected = InvalidDefinitionException.class)
+	public void loadFullWithJson() throws IOException {
+		String profile = new String(
+				Files.readAllBytes(Paths.get("src/test/resources/party1.json")),
+				StandardCharsets.UTF_8);
+		UtilitySpace space = jackson.readValue(profile, UtilitySpace.class);
+
+	}
 }
Index: profile/src/test/resources/party1.json
===================================================================
--- profile/src/test/resources/party1.json	(revision 7)
+++ profile/src/test/resources/party1.json	(revision 7)
@@ -0,0 +1,126 @@
+{
+	"LinearAdditiveUtilitySpace": {
+		"name": "party1",
+		"issueUtilities": {
+			"Food": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Chips and Nuts": 0.75,
+						"Finger-Food": 0.52,
+						"Handmade Food": 0.51,
+						"Catering": 0.25
+					}
+				}
+			},
+			"Drinks": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Non-Alcoholic": 0.263,
+						"Beer Only": 0.98,
+						"Handmade Cocktails": 0.672,
+						"Catering": 0.334
+					}
+				}
+			},
+			"Location": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Party Tent": 0.52,
+						"Your Dorm": 0.23,
+						"Party Room": 0.99,
+						"Ballroom": 0.77
+					}
+				}
+			},
+			"Invitations": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Plain": 0.24,
+						"Photo": 0.74,
+						"Custom, Handmade": 1,
+						"Custom, Printed": 0.48
+					}
+				}
+			},
+			"Music": {
+				"discreteutils": {
+					"valueUtilities": {
+						"MP3": 0.65,
+						"DJ": 0.99,
+						"Band": 0.35
+					}
+				}
+			},
+			"Cleanup": {
+				"discreteutils": {
+					"valueUtilities": {
+						"Water and Soap": 0.65,
+						"Specialized Materials": 0.96,
+						"Special Equiment": 0.32,
+						"Hired Help": 0.31
+					}
+				}
+			}
+		},
+		"issueWeights": {
+			"Food": 0.19,
+			"Drinks": 0.28,
+			"Location": 0.19,
+			"Invitations": 0.05,
+			"Music": 0.19,
+			"Cleanup": 0.10
+		},
+		"domain": {
+			"name": "party",
+			"issuesValues": {
+				"Food": {
+					"values": [
+						"Chips and Nuts",
+						"Finger-Food",
+						"Handmade Food",
+						"Catering"
+					]
+				},
+				"Drinks": {
+					"values": [
+						"Non-Alcoholic",
+						"Beer Only",
+						"Handmade Cocktails",
+						"Catering"
+					]
+				},
+				"Location": {
+					"values": [
+						"Party Tent'",
+						"Your Dorm",
+						"Party Room",
+						"Ballroom"
+					]
+				},
+				"Invitations": {
+					"values": [
+						"Plain",
+						"Photo",
+						"Custom, Handmade",
+						"Custom, Printed"
+					]
+				},
+				"Music": {
+					"values": [
+						"MP3",
+						"DJ",
+						"Band"
+					]
+				},
+				"Cleanup": {
+					"values": [
+						"Water and Soap",
+						"Specialized Materials",
+						"Special Equiment",
+						"Hired Help"
+					]
+				}
+			}
+		}
+	}
+}
