Index: /branches/GeneralizedQAP/HeuristicLab 3.3 Services.sln
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab 3.3 Services.sln	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab 3.3 Services.sln	(revision 6733)
@@ -18,9 +18,4 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.ProblemInstances-3.3", "HeuristicLab.Services.ProblemInstances\HeuristicLab.Services.ProblemInstances-3.3.csproj", "{D4E9242F-DAA4-4A15-8DE7-91CECFFFD898}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.ProblemInstances.QAPInitializer", "HeuristicLab.Services.ProblemInstances.QAPInitializer\HeuristicLab.Services.ProblemInstances.QAPInitializer.csproj", "{BA6B5487-6CCA-4484-B196-13B68A45CBB5}"
-	ProjectSection(ProjectDependencies) = postProject
-		{D4E9242F-DAA4-4A15-8DE7-91CECFFFD898} = {D4E9242F-DAA4-4A15-8DE7-91CECFFFD898}
-	EndProjectSection
 EndProject
 Global
@@ -99,16 +94,4 @@
 		{D4E9242F-DAA4-4A15-8DE7-91CECFFFD898}.Release|x64.ActiveCfg = Release|Any CPU
 		{D4E9242F-DAA4-4A15-8DE7-91CECFFFD898}.Release|x86.ActiveCfg = Release|Any CPU
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Debug|Any CPU.ActiveCfg = Debug|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Debug|Mixed Platforms.Build.0 = Debug|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Debug|x64.ActiveCfg = Debug|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Debug|x86.ActiveCfg = Debug|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Debug|x86.Build.0 = Debug|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Release|Any CPU.ActiveCfg = Release|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Release|Mixed Platforms.ActiveCfg = Release|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Release|Mixed Platforms.Build.0 = Release|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Release|x64.ActiveCfg = Release|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Release|x86.ActiveCfg = Release|x86
-		{BA6B5487-6CCA-4484-B196-13B68A45CBB5}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/HeuristicLab.Problems.QuadraticAssignment.Views-3.3.csproj
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/HeuristicLab.Problems.QuadraticAssignment.Views-3.3.csproj	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/HeuristicLab.Problems.QuadraticAssignment.Views-3.3.csproj	(revision 6733)
@@ -154,17 +154,4 @@
       <DependentUpon>Reference.svcmap</DependentUpon>
     </None>
-    <None Include="Service References\QAPServiceReference\QAP.wsdl" />
-    <None Include="Service References\QAPServiceReference\QAP.xsd">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="Service References\QAPServiceReference\QAP1.xsd">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="Service References\QAPServiceReference\QAP2.xsd">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="Service References\QAPServiceReference\QAP3.xsd">
-      <SubType>Designer</SubType>
-    </None>
   </ItemGroup>
   <ItemGroup>
@@ -232,7 +219,4 @@
   </ItemGroup>
   <ItemGroup>
-    <None Include="Service References\QAPServiceReference\QAP.disco" />
-  </ItemGroup>
-  <ItemGroup>
     <None Include="Service References\QAPServiceReference\configuration91.svcinfo" />
   </ItemGroup>
@@ -241,8 +225,24 @@
   </ItemGroup>
   <ItemGroup>
+    <None Include="Service References\QAPServiceReference\QAP1.wsdl" />
+    <None Include="Service References\QAPServiceReference\QAP4.xsd">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="Service References\QAPServiceReference\QAP41.xsd">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="Service References\QAPServiceReference\QAP42.xsd">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="Service References\QAPServiceReference\QAP43.xsd">
+      <SubType>Designer</SubType>
+    </None>
     <None Include="Service References\QAPServiceReference\Reference.svcmap">
       <Generator>WCF Proxy Generator</Generator>
       <LastGenOutput>Reference.cs</LastGenOutput>
     </None>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Service References\QAPServiceReference\QAP1.disco" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.cs	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/QuadraticAssignmentProblemView.cs	(revision 6733)
@@ -23,4 +23,5 @@
 using System.Drawing;
 using System.Linq;
+using System.Threading.Tasks;
 using System.Windows.Forms;
 using HeuristicLab.Common.Resources;
@@ -80,9 +81,5 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      instancesComboBox.Items.Clear();
       if (Content != null) {
-        foreach (string instance in Content.EmbeddedInstances) {
-          instancesComboBox.Items.Add(instance);
-        }
         qapView.Distances = Content.Distances;
         qapView.Weights = Content.Weights;
@@ -97,50 +94,59 @@
     protected override void SetEnabledStateOfControls() {
       base.SetEnabledStateOfControls();
+      reloadInstancesButton.Enabled = !ReadOnly && !Locked && Content != null;
       instancesComboBox.Enabled = !ReadOnly && !Locked && Content != null;
-      loadInstanceButton.Enabled = !ReadOnly && !Locked && Content != null && instancesComboBox.SelectedItem != null;
+      loadInstanceButton.Enabled = !ReadOnly && !Locked && Content != null && !String.IsNullOrEmpty((string)instancesComboBox.SelectedItem);
       importInstanceButton.Enabled = !ReadOnly && !Locked && Content != null;
     }
 
     private void instancesComboBox_SelectedValueChanged(object sender, System.EventArgs e) {
-      loadInstanceButton.Enabled = instancesComboBox.SelectedItem != null;
+      SetEnabledStateOfControls();
     }
 
     private void loadInstanceButton_Click(object sender, System.EventArgs e) {
-      string instance = instancesComboBox.SelectedItem as string;
-      try {
-        using (QAPServiceReference.QAPClient client = new QAPServiceReference.QAPClient()) {
-          var data = client.GetProblemInstanceData(instance);
-          DoubleMatrix weights = new DoubleMatrix(data.Weights.Length, data.Weights.Length);
-          DoubleMatrix distances = new DoubleMatrix(data.Weights.Length, data.Weights.Length);
-          try {
-            for (int i = 0; i < data.Weights.Length; i++)
-              for (int j = 0; j < data.Weights.Length; j++) {
-                weights[i, j] = data.Weights[i][j];
-                distances[i, j] = data.Distances[i][j];
+      ReadOnly = true;
+      string instanceStr = instancesComboBox.SelectedItem as string;
+      Task t = new Task((object name) => {
+        string instance = (string)name;
+        if (String.IsNullOrEmpty(instance)) return;
+        try {
+          using (QAPServiceReference.QAPClient client = new QAPServiceReference.QAPClient()) {
+            var data = client.GetProblemInstanceData(instance);
+            DoubleMatrix weights = new DoubleMatrix(data.Weights.Length, data.Weights.Length);
+            DoubleMatrix distances = new DoubleMatrix(data.Weights.Length, data.Weights.Length);
+            try {
+              for (int i = 0; i < data.Weights.Length; i++)
+                for (int j = 0; j < data.Weights.Length; j++) {
+                  weights[i, j] = data.Weights[i][j];
+                  distances[i, j] = data.Distances[i][j];
+                }
+            } catch (IndexOutOfRangeException) {
+              MessageBox.Show("The problem data is malformed, the problem could not be loaded.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+            }
+            Content.Name = data.Name;
+            Content.Description = data.Description;
+            Content.Maximization.Value = data.Maximization;
+            Content.Weights = weights;
+            Content.Distances = distances;
+
+            Content.BestKnownQualityParameter.Value = null;
+            Content.BestKnownSolution = null;
+            Content.BestKnownSolutions = new ItemSet<Permutation>();
+            var solutions = client.GetBestSolutionsData(instance);
+            if (solutions.Any()) {
+              Content.BestKnownQualityParameter.Value = new DoubleValue(solutions.First().Quality);
+              Content.BestKnownSolution = new Permutation(PermutationTypes.Absolute, solutions.First().Assignment);
+              foreach (var solution in solutions) {
+                Content.BestKnownSolutions.Add(new Permutation(PermutationTypes.Absolute, solution.Assignment));
               }
-          } catch (IndexOutOfRangeException) {
-            MessageBox.Show("The problem data is malformed, the problem could not be loaded.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
-          }
-          Content.Name = data.Name;
-          Content.Description = data.Description;
-          Content.Maximization.Value = data.Maximization;
-          Content.Weights = weights;
-          Content.Distances = distances;
-
-          Content.BestKnownQualityParameter.Value = null;
-          Content.BestKnownSolution = null;
-          Content.BestKnownSolutions = new ItemSet<Permutation>();
-          var solutions = client.GetBestSolutionsData(instance);
-          if (solutions.Any()) {
-            Content.BestKnownQualityParameter.Value = new DoubleValue(solutions.First().Quality);
-            Content.BestKnownSolution = new Permutation(PermutationTypes.Absolute, solutions.First().Assignment);
-            foreach (var solution in solutions) {
-              Content.BestKnownSolutions.Add(new Permutation(PermutationTypes.Absolute, solution.Assignment));
             }
           }
+        } catch (Exception ex) {
+          PluginInfrastructure.ErrorHandling.ShowErrorDialog(ex);
+        } finally {
+          ReadOnly = false;
         }
-      } catch (Exception ex) {
-        PluginInfrastructure.ErrorHandling.ShowErrorDialog(ex);
-      }
+      }, instanceStr);
+      t.Start();
     }
 
@@ -172,13 +178,21 @@
 
     private void reloadInstancesButton_Click(object sender, EventArgs e) {
-      try {
-        using (QAPServiceReference.QAPClient client = new QAPServiceReference.QAPClient()) {
-          instancesComboBox.Items.Clear();
-          foreach (string name in client.GetProblemInstances())
-            instancesComboBox.Items.Add(name);
+      ReadOnly = true;
+      System.Threading.Tasks.Task t = new System.Threading.Tasks.Task(() => {
+        try {
+          using (QAPServiceReference.QAPClient client = new QAPServiceReference.QAPClient()) {
+            instancesComboBox.Items.Clear();
+            foreach (string name in client.GetProblemInstances())
+              instancesComboBox.Items.Add(name);
+            if (instancesComboBox.Items.Count > 0)
+              instancesComboBox.SelectedIndex = 0;
+          }
+        } catch (Exception ex) {
+          PluginInfrastructure.ErrorHandling.ShowErrorDialog(ex);
+        } finally {
+          ReadOnly = false;
         }
-      } catch (Exception ex) {
-        PluginInfrastructure.ErrorHandling.ShowErrorDialog(ex);
-      }
+      });
+      t.Start();
     }
   }
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPInstanceDto.datasource
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPInstanceDto.datasource	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPInstanceDto.datasource	(revision 6733)
@@ -7,4 +7,4 @@
 -->
 <GenericObjectDataSource DisplayName="QAPInstanceDto" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
-   <TypeInfo>HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPInstanceDto</TypeInfo>
+   <TypeInfo>HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPInstanceDto, Service References.QAPServiceReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
 </GenericObjectDataSource>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPSolutionDto.datasource
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPSolutionDto.datasource	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPSolutionDto.datasource	(revision 6733)
@@ -7,4 +7,4 @@
 -->
 <GenericObjectDataSource DisplayName="QAPSolutionDto" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
-   <TypeInfo>HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPSolutionDto</TypeInfo>
+   <TypeInfo>HeuristicLab.Problems.QuadraticAssignment.Views.QAPServiceReference.QAPSolutionDto, Service References.QAPServiceReference.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
 </GenericObjectDataSource>
Index: anches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP.disco
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP.disco	(revision 6732)
+++ 	(revision )
@@ -1,4 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
-  <contractRef ref="http://localhost:3978/QAP/QAP.svc?wsdl" docRef="http://localhost:3978/QAP/QAP.svc" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
-</discovery>
Index: anches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP.wsdl
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP.wsdl	(revision 6732)
+++ 	(revision )
@@ -1,78 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="QAP" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
-  <wsdl:types>
-    <xsd:schema targetNamespace="http://tempuri.org/Imports">
-      <xsd:import schemaLocation="http://localhost:3978/QAP/QAP.svc?xsd=xsd0" namespace="http://tempuri.org/" />
-      <xsd:import schemaLocation="http://localhost:3978/QAP/QAP.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
-      <xsd:import schemaLocation="http://localhost:3978/QAP/QAP.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
-      <xsd:import schemaLocation="http://localhost:3978/QAP/QAP.svc?xsd=xsd3" namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" />
-    </xsd:schema>
-  </wsdl:types>
-  <wsdl:message name="IQAP_GetProblemInstances_InputMessage">
-    <wsdl:part name="parameters" element="tns:GetProblemInstances" />
-  </wsdl:message>
-  <wsdl:message name="IQAP_GetProblemInstances_OutputMessage">
-    <wsdl:part name="parameters" element="tns:GetProblemInstancesResponse" />
-  </wsdl:message>
-  <wsdl:message name="IQAP_GetProblemInstanceData_InputMessage">
-    <wsdl:part name="parameters" element="tns:GetProblemInstanceData" />
-  </wsdl:message>
-  <wsdl:message name="IQAP_GetProblemInstanceData_OutputMessage">
-    <wsdl:part name="parameters" element="tns:GetProblemInstanceDataResponse" />
-  </wsdl:message>
-  <wsdl:message name="IQAP_GetBestSolutionsData_InputMessage">
-    <wsdl:part name="parameters" element="tns:GetBestSolutionsData" />
-  </wsdl:message>
-  <wsdl:message name="IQAP_GetBestSolutionsData_OutputMessage">
-    <wsdl:part name="parameters" element="tns:GetBestSolutionsDataResponse" />
-  </wsdl:message>
-  <wsdl:portType name="IQAP">
-    <wsdl:operation name="GetProblemInstances">
-      <wsdl:input wsaw:Action="http://tempuri.org/IQAP/GetProblemInstances" message="tns:IQAP_GetProblemInstances_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IQAP/GetProblemInstancesResponse" message="tns:IQAP_GetProblemInstances_OutputMessage" />
-    </wsdl:operation>
-    <wsdl:operation name="GetProblemInstanceData">
-      <wsdl:input wsaw:Action="http://tempuri.org/IQAP/GetProblemInstanceData" message="tns:IQAP_GetProblemInstanceData_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IQAP/GetProblemInstanceDataResponse" message="tns:IQAP_GetProblemInstanceData_OutputMessage" />
-    </wsdl:operation>
-    <wsdl:operation name="GetBestSolutionsData">
-      <wsdl:input wsaw:Action="http://tempuri.org/IQAP/GetBestSolutionsData" message="tns:IQAP_GetBestSolutionsData_InputMessage" />
-      <wsdl:output wsaw:Action="http://tempuri.org/IQAP/GetBestSolutionsDataResponse" message="tns:IQAP_GetBestSolutionsData_OutputMessage" />
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="BasicHttpBinding_IQAP" type="tns:IQAP">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
-    <wsdl:operation name="GetProblemInstances">
-      <soap:operation soapAction="http://tempuri.org/IQAP/GetProblemInstances" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetProblemInstanceData">
-      <soap:operation soapAction="http://tempuri.org/IQAP/GetProblemInstanceData" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="GetBestSolutionsData">
-      <soap:operation soapAction="http://tempuri.org/IQAP/GetBestSolutionsData" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="QAP">
-    <wsdl:port name="BasicHttpBinding_IQAP" binding="tns:BasicHttpBinding_IQAP">
-      <soap:address location="http://localhost:3978/QAP/QAP.svc" />
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
Index: anches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP.xsd
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP.xsd	(revision 6732)
+++ 	(revision )
@@ -1,27 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-  <xs:complexType name="ArrayOfstring">
-    <xs:sequence>
-      <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
-    </xs:sequence>
-  </xs:complexType>
-  <xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
-  <xs:complexType name="ArrayOfArrayOfdouble">
-    <xs:sequence>
-      <xs:element minOccurs="0" maxOccurs="unbounded" name="ArrayOfdouble" nillable="true" type="tns:ArrayOfdouble" />
-    </xs:sequence>
-  </xs:complexType>
-  <xs:element name="ArrayOfArrayOfdouble" nillable="true" type="tns:ArrayOfArrayOfdouble" />
-  <xs:complexType name="ArrayOfdouble">
-    <xs:sequence>
-      <xs:element minOccurs="0" maxOccurs="unbounded" name="double" type="xs:double" />
-    </xs:sequence>
-  </xs:complexType>
-  <xs:element name="ArrayOfdouble" nillable="true" type="tns:ArrayOfdouble" />
-  <xs:complexType name="ArrayOfint">
-    <xs:sequence>
-      <xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int" />
-    </xs:sequence>
-  </xs:complexType>
-  <xs:element name="ArrayOfint" nillable="true" type="tns:ArrayOfint" />
-</xs:schema>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP1.disco
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP1.disco	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP1.disco	(revision 6733)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
+  <contractRef ref="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?wsdl" docRef="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
+</discovery>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP1.wsdl
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP1.wsdl	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP1.wsdl	(revision 6733)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="QAP" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://tempuri.org/Imports">
+      <xsd:import schemaLocation="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd0" namespace="http://tempuri.org/" />
+      <xsd:import schemaLocation="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+      <xsd:import schemaLocation="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+      <xsd:import schemaLocation="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd3" namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" />
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="IQAP_GetProblemInstances_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetProblemInstances" />
+  </wsdl:message>
+  <wsdl:message name="IQAP_GetProblemInstances_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetProblemInstancesResponse" />
+  </wsdl:message>
+  <wsdl:message name="IQAP_GetProblemInstanceData_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetProblemInstanceData" />
+  </wsdl:message>
+  <wsdl:message name="IQAP_GetProblemInstanceData_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetProblemInstanceDataResponse" />
+  </wsdl:message>
+  <wsdl:message name="IQAP_GetBestSolutionsData_InputMessage">
+    <wsdl:part name="parameters" element="tns:GetBestSolutionsData" />
+  </wsdl:message>
+  <wsdl:message name="IQAP_GetBestSolutionsData_OutputMessage">
+    <wsdl:part name="parameters" element="tns:GetBestSolutionsDataResponse" />
+  </wsdl:message>
+  <wsdl:portType name="IQAP">
+    <wsdl:operation name="GetProblemInstances">
+      <wsdl:input wsaw:Action="http://tempuri.org/IQAP/GetProblemInstances" message="tns:IQAP_GetProblemInstances_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IQAP/GetProblemInstancesResponse" message="tns:IQAP_GetProblemInstances_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetProblemInstanceData">
+      <wsdl:input wsaw:Action="http://tempuri.org/IQAP/GetProblemInstanceData" message="tns:IQAP_GetProblemInstanceData_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IQAP/GetProblemInstanceDataResponse" message="tns:IQAP_GetProblemInstanceData_OutputMessage" />
+    </wsdl:operation>
+    <wsdl:operation name="GetBestSolutionsData">
+      <wsdl:input wsaw:Action="http://tempuri.org/IQAP/GetBestSolutionsData" message="tns:IQAP_GetBestSolutionsData_InputMessage" />
+      <wsdl:output wsaw:Action="http://tempuri.org/IQAP/GetBestSolutionsDataResponse" message="tns:IQAP_GetBestSolutionsData_OutputMessage" />
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="BasicHttpBinding_IQAP" type="tns:IQAP">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="GetProblemInstances">
+      <soap:operation soapAction="http://tempuri.org/IQAP/GetProblemInstances" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetProblemInstanceData">
+      <soap:operation soapAction="http://tempuri.org/IQAP/GetProblemInstanceData" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="GetBestSolutionsData">
+      <soap:operation soapAction="http://tempuri.org/IQAP/GetBestSolutionsData" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="QAP">
+    <wsdl:port name="BasicHttpBinding_IQAP" binding="tns:BasicHttpBinding_IQAP">
+      <soap:address location="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc" />
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
Index: anches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP1.xsd
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP1.xsd	(revision 6732)
+++ 	(revision )
@@ -1,27 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-  <xs:import schemaLocation="http://localhost:3978/QAP/QAP.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
-  <xs:complexType name="QAPInstanceDto">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
-      <xs:element xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="Distances" nillable="true" type="q1:ArrayOfArrayOfdouble" />
-      <xs:element minOccurs="0" name="Maximization" type="xs:boolean" />
-      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
-      <xs:element xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="Weights" nillable="true" type="q2:ArrayOfArrayOfdouble" />
-    </xs:sequence>
-  </xs:complexType>
-  <xs:element name="QAPInstanceDto" nillable="true" type="tns:QAPInstanceDto" />
-  <xs:complexType name="ArrayOfQAPSolutionDto">
-    <xs:sequence>
-      <xs:element minOccurs="0" maxOccurs="unbounded" name="QAPSolutionDto" nillable="true" type="tns:QAPSolutionDto" />
-    </xs:sequence>
-  </xs:complexType>
-  <xs:element name="ArrayOfQAPSolutionDto" nillable="true" type="tns:ArrayOfQAPSolutionDto" />
-  <xs:complexType name="QAPSolutionDto">
-    <xs:sequence>
-      <xs:element xmlns:q3="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="Assignment" nillable="true" type="q3:ArrayOfint" />
-      <xs:element minOccurs="0" name="Quality" type="xs:double" />
-    </xs:sequence>
-  </xs:complexType>
-  <xs:element name="QAPSolutionDto" nillable="true" type="tns:QAPSolutionDto" />
-</xs:schema>
Index: anches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP2.xsd
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP2.xsd	(revision 6732)
+++ 	(revision )
@@ -1,45 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-  <xs:import schemaLocation="http://localhost:3978/QAP/QAP.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
-  <xs:import schemaLocation="http://localhost:3978/QAP/QAP.svc?xsd=xsd3" namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" />
-  <xs:element name="GetProblemInstances">
-    <xs:complexType>
-      <xs:sequence />
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="GetProblemInstancesResponse">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="GetProblemInstancesResult" nillable="true" type="q1:ArrayOfstring" />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="GetProblemInstanceData">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element minOccurs="0" name="instance" nillable="true" type="xs:string" />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="GetProblemInstanceDataResponse">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" minOccurs="0" name="GetProblemInstanceDataResult" nillable="true" type="q2:QAPInstanceDto" />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="GetBestSolutionsData">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element minOccurs="0" name="instance" nillable="true" type="xs:string" />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="GetBestSolutionsDataResponse">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" minOccurs="0" name="GetBestSolutionsDataResult" nillable="true" type="q3:ArrayOfQAPSolutionDto" />
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-</xs:schema>
Index: anches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP3.xsd
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP3.xsd	(revision 6732)
+++ 	(revision )
@@ -1,42 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-  <xs:element name="anyType" nillable="true" type="xs:anyType" />
-  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
-  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
-  <xs:element name="boolean" nillable="true" type="xs:boolean" />
-  <xs:element name="byte" nillable="true" type="xs:byte" />
-  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
-  <xs:element name="decimal" nillable="true" type="xs:decimal" />
-  <xs:element name="double" nillable="true" type="xs:double" />
-  <xs:element name="float" nillable="true" type="xs:float" />
-  <xs:element name="int" nillable="true" type="xs:int" />
-  <xs:element name="long" nillable="true" type="xs:long" />
-  <xs:element name="QName" nillable="true" type="xs:QName" />
-  <xs:element name="short" nillable="true" type="xs:short" />
-  <xs:element name="string" nillable="true" type="xs:string" />
-  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
-  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
-  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
-  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
-  <xs:element name="char" nillable="true" type="tns:char" />
-  <xs:simpleType name="char">
-    <xs:restriction base="xs:int" />
-  </xs:simpleType>
-  <xs:element name="duration" nillable="true" type="tns:duration" />
-  <xs:simpleType name="duration">
-    <xs:restriction base="xs:duration">
-      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
-      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
-      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:element name="guid" nillable="true" type="tns:guid" />
-  <xs:simpleType name="guid">
-    <xs:restriction base="xs:string">
-      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:attribute name="FactoryType" type="xs:QName" />
-  <xs:attribute name="Id" type="xs:ID" />
-  <xs:attribute name="Ref" type="xs:IDREF" />
-</xs:schema>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP4.xsd
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP4.xsd	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP4.xsd	(revision 6733)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import schemaLocation="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+  <xs:complexType name="QAPInstanceDto">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="BestKnownQuality" type="xs:double" />
+      <xs:element minOccurs="0" name="Description" nillable="true" type="xs:string" />
+      <xs:element xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="Distances" nillable="true" type="q1:ArrayOfArrayOfdouble" />
+      <xs:element minOccurs="0" name="HasBestKnownQuality" type="xs:boolean" />
+      <xs:element minOccurs="0" name="Maximization" type="xs:boolean" />
+      <xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
+      <xs:element xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="Weights" nillable="true" type="q2:ArrayOfArrayOfdouble" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="QAPInstanceDto" nillable="true" type="tns:QAPInstanceDto" />
+  <xs:complexType name="ArrayOfQAPSolutionDto">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="QAPSolutionDto" nillable="true" type="tns:QAPSolutionDto" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfQAPSolutionDto" nillable="true" type="tns:ArrayOfQAPSolutionDto" />
+  <xs:complexType name="QAPSolutionDto">
+    <xs:sequence>
+      <xs:element xmlns:q3="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="Assignment" nillable="true" type="q3:ArrayOfint" />
+      <xs:element minOccurs="0" name="AssignmentUndefined" type="xs:boolean" />
+      <xs:element minOccurs="0" name="Quality" type="xs:double" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="QAPSolutionDto" nillable="true" type="tns:QAPSolutionDto" />
+</xs:schema>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP41.xsd
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP41.xsd	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP41.xsd	(revision 6733)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://tempuri.org/" elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:import schemaLocation="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+  <xs:import schemaLocation="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd3" namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" />
+  <xs:element name="GetProblemInstances">
+    <xs:complexType>
+      <xs:sequence />
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetProblemInstancesResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="GetProblemInstancesResult" nillable="true" type="q1:ArrayOfstring" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetProblemInstanceData">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" name="instance" nillable="true" type="xs:string" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetProblemInstanceDataResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" minOccurs="0" name="GetProblemInstanceDataResult" nillable="true" type="q2:QAPInstanceDto" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetBestSolutionsData">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" name="instance" nillable="true" type="xs:string" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="GetBestSolutionsDataResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.ProblemInstances" minOccurs="0" name="GetBestSolutionsDataResult" nillable="true" type="q3:ArrayOfQAPSolutionDto" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP42.xsd
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP42.xsd	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP42.xsd	(revision 6733)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:complexType name="ArrayOfstring">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
+  <xs:complexType name="ArrayOfArrayOfdouble">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="ArrayOfdouble" nillable="true" type="tns:ArrayOfdouble" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfArrayOfdouble" nillable="true" type="tns:ArrayOfArrayOfdouble" />
+  <xs:complexType name="ArrayOfdouble">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="double" type="xs:double" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfdouble" nillable="true" type="tns:ArrayOfdouble" />
+  <xs:complexType name="ArrayOfint">
+    <xs:sequence>
+      <xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="ArrayOfint" nillable="true" type="tns:ArrayOfint" />
+</xs:schema>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP43.xsd
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP43.xsd	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/QAP43.xsd	(revision 6733)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="anyType" nillable="true" type="xs:anyType" />
+  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
+  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
+  <xs:element name="boolean" nillable="true" type="xs:boolean" />
+  <xs:element name="byte" nillable="true" type="xs:byte" />
+  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
+  <xs:element name="decimal" nillable="true" type="xs:decimal" />
+  <xs:element name="double" nillable="true" type="xs:double" />
+  <xs:element name="float" nillable="true" type="xs:float" />
+  <xs:element name="int" nillable="true" type="xs:int" />
+  <xs:element name="long" nillable="true" type="xs:long" />
+  <xs:element name="QName" nillable="true" type="xs:QName" />
+  <xs:element name="short" nillable="true" type="xs:short" />
+  <xs:element name="string" nillable="true" type="xs:string" />
+  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
+  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
+  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
+  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
+  <xs:element name="char" nillable="true" type="tns:char" />
+  <xs:simpleType name="char">
+    <xs:restriction base="xs:int" />
+  </xs:simpleType>
+  <xs:element name="duration" nillable="true" type="tns:duration" />
+  <xs:simpleType name="duration">
+    <xs:restriction base="xs:duration">
+      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
+      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
+      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="guid" nillable="true" type="tns:guid" />
+  <xs:simpleType name="guid">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="FactoryType" type="xs:QName" />
+  <xs:attribute name="Id" type="xs:ID" />
+  <xs:attribute name="Ref" type="xs:IDREF" />
+</xs:schema>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/Reference.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/Reference.cs	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/Reference.cs	(revision 6733)
@@ -24,8 +24,14 @@
         
         [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private double BestKnownQualityField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
         private string DescriptionField;
         
         [System.Runtime.Serialization.OptionalFieldAttribute()]
         private double[][] DistancesField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool HasBestKnownQualityField;
         
         [System.Runtime.Serialization.OptionalFieldAttribute()]
@@ -45,4 +51,17 @@
             set {
                 this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double BestKnownQuality {
+            get {
+                return this.BestKnownQualityField;
+            }
+            set {
+                if ((this.BestKnownQualityField.Equals(value) != true)) {
+                    this.BestKnownQualityField = value;
+                    this.RaisePropertyChanged("BestKnownQuality");
+                }
             }
         }
@@ -70,4 +89,17 @@
                     this.DistancesField = value;
                     this.RaisePropertyChanged("Distances");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool HasBestKnownQuality {
+            get {
+                return this.HasBestKnownQualityField;
+            }
+            set {
+                if ((this.HasBestKnownQualityField.Equals(value) != true)) {
+                    this.HasBestKnownQualityField = value;
+                    this.RaisePropertyChanged("HasBestKnownQuality");
                 }
             }
@@ -136,4 +168,7 @@
         
         [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool AssignmentUndefinedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
         private double QualityField;
         
@@ -157,4 +192,17 @@
                     this.AssignmentField = value;
                     this.RaisePropertyChanged("Assignment");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool AssignmentUndefined {
+            get {
+                return this.AssignmentUndefinedField;
+            }
+            set {
+                if ((this.AssignmentUndefinedField.Equals(value) != true)) {
+                    this.AssignmentUndefinedField = value;
+                    this.RaisePropertyChanged("AssignmentUndefined");
                 }
             }
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/Reference.svcmap
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/Reference.svcmap	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/Reference.svcmap	(revision 6733)
@@ -19,13 +19,13 @@
   </ClientOptions>
   <MetadataSources>
-    <MetadataSource Address="http://localhost:3978/QAP/QAP.svc" Protocol="http" SourceId="1" />
+    <MetadataSource Address="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc" Protocol="http" SourceId="1" />
   </MetadataSources>
   <Metadata>
-    <MetadataFile FileName="QAP.disco" MetadataType="Disco" ID="dea2bc2c-960b-40b9-94ce-8cffa4b02221" SourceId="1" SourceUrl="http://localhost:3978/QAP/QAP.svc?disco" />
-    <MetadataFile FileName="QAP.wsdl" MetadataType="Wsdl" ID="ee1aab36-1ae6-4864-99de-d577d1f3de16" SourceId="1" SourceUrl="http://localhost:3978/QAP/QAP.svc?wsdl" />
-    <MetadataFile FileName="QAP.xsd" MetadataType="Schema" ID="bf8e27bf-7807-41e0-8fe5-0941e9c0b93a" SourceId="1" SourceUrl="http://localhost:3978/QAP/QAP.svc?xsd=xsd2" />
-    <MetadataFile FileName="QAP1.xsd" MetadataType="Schema" ID="4dc00ff5-082c-49a3-b956-0af89ccfc448" SourceId="1" SourceUrl="http://localhost:3978/QAP/QAP.svc?xsd=xsd3" />
-    <MetadataFile FileName="QAP2.xsd" MetadataType="Schema" ID="d883e2c7-abf6-4c20-8d60-23f417b40561" SourceId="1" SourceUrl="http://localhost:3978/QAP/QAP.svc?xsd=xsd0" />
-    <MetadataFile FileName="QAP3.xsd" MetadataType="Schema" ID="c86fad99-c0cb-4ce6-9318-38797ba97040" SourceId="1" SourceUrl="http://localhost:3978/QAP/QAP.svc?xsd=xsd1" />
+    <MetadataFile FileName="QAP1.disco" MetadataType="Disco" ID="b15b4f39-21ff-4118-8aff-d2a421e1d163" SourceId="1" SourceUrl="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?disco" />
+    <MetadataFile FileName="QAP1.wsdl" MetadataType="Wsdl" ID="d88dc4ea-2680-476d-8346-80a59c48b187" SourceId="1" SourceUrl="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?wsdl" />
+    <MetadataFile FileName="QAP4.xsd" MetadataType="Schema" ID="6aad67b2-97c7-4a32-9cfd-8475ebf3060c" SourceId="1" SourceUrl="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd3" />
+    <MetadataFile FileName="QAP41.xsd" MetadataType="Schema" ID="457c09d3-5cf2-410c-beab-4c8187c62d98" SourceId="1" SourceUrl="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd0" />
+    <MetadataFile FileName="QAP42.xsd" MetadataType="Schema" ID="51f1963a-e89f-4e57-8253-252e9d21feca" SourceId="1" SourceUrl="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd2" />
+    <MetadataFile FileName="QAP43.xsd" MetadataType="Schema" ID="6adc07a9-4704-4ad0-b2cd-f304b65ee30d" SourceId="1" SourceUrl="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc?xsd=xsd1" />
   </Metadata>
   <Extensions>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/configuration.svcinfo
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/configuration.svcinfo	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/configuration.svcinfo	(revision 6733)
@@ -6,5 +6,5 @@
   </bindings>
   <endpoints>
-    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:3978/QAP/QAP.svc&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_IQAP&quot; contract=&quot;QAPServiceReference.IQAP&quot; name=&quot;BasicHttpBinding_IQAP&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:3978/QAP/QAP.svc&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_IQAP&quot; contract=&quot;QAPServiceReference.IQAP&quot; name=&quot;BasicHttpBinding_IQAP&quot; /&gt;" contractName="QAPServiceReference.IQAP" name="BasicHttpBinding_IQAP" />
+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_IQAP&quot; contract=&quot;QAPServiceReference.IQAP&quot; name=&quot;BasicHttpBinding_IQAP&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_IQAP&quot; contract=&quot;QAPServiceReference.IQAP&quot; name=&quot;BasicHttpBinding_IQAP&quot; /&gt;" contractName="QAPServiceReference.IQAP" name="BasicHttpBinding_IQAP" />
   </endpoints>
 </configurationSnapshot>
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/configuration91.svcinfo
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/configuration91.svcinfo	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/Service References/QAPServiceReference/configuration91.svcinfo	(revision 6733)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="PGSA1ejV32Fh0z8GmGBf7NFeB0w=">
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="Ik4GzQEYPImjtoibudTmBx1Uums=">
   <bindingConfigurations>
     <bindingConfiguration bindingType="basicHttpBinding" name="BasicHttpBinding_IQAP">
@@ -113,8 +113,8 @@
   </bindingConfigurations>
   <endpoints>
-    <endpoint name="BasicHttpBinding_IQAP" contract="QAPServiceReference.IQAP" bindingType="basicHttpBinding" address="http://localhost:3978/QAP/QAP.svc" bindingConfiguration="BasicHttpBinding_IQAP">
+    <endpoint name="BasicHttpBinding_IQAP" contract="QAPServiceReference.IQAP" bindingType="basicHttpBinding" address="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc" bindingConfiguration="BasicHttpBinding_IQAP">
       <properties>
         <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-          <serializedValue>http://localhost:3978/QAP/QAP.svc</serializedValue>
+          <serializedValue>http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc</serializedValue>
         </property>
         <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/app.config
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/app.config	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment.Views/3.3/app.config	(revision 6733)
@@ -2,4 +2,11 @@
 <configuration>
     <system.serviceModel>
+      <behaviors>
+        <endpointBehaviors>
+          <behavior name="ProblemInstancesLargeMessages">
+            <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
+          </behavior>
+        </endpointBehaviors>
+      </behaviors>
         <bindings>
             <basicHttpBinding>
@@ -7,9 +14,9 @@
                     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                     allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
-                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
+                    maxBufferSize="16777216" maxBufferPoolSize="524288" maxReceivedMessageSize="16777216"
                     messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                     useDefaultWebProxy="true">
-                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
-                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+                    <readerQuotas maxDepth="512" maxStringContentLength="1048576" maxArrayLength="1048576"
+                        maxBytesPerRead="8192" maxNameTableCharCount="16384" />
                     <security mode="None">
                         <transport clientCredentialType="None" proxyCredentialType="None"
@@ -21,7 +28,8 @@
         </bindings>
         <client>
-            <endpoint address="http://localhost:3978/QAP/QAP.svc" binding="basicHttpBinding"
-                bindingConfiguration="BasicHttpBinding_IQAP" contract="QAPServiceReference.IQAP"
-                name="BasicHttpBinding_IQAP" />
+            <endpoint address="http://services.heuristiclab.com/ProblemInstances-3.3/QAP/QAP.svc"
+                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IQAP"
+                behaviorConfiguration="ProblemInstancesLargeMessages"
+                contract="QAPServiceReference.IQAP" name="BasicHttpBinding_IQAP" />
         </client>
     </system.serviceModel>
Index: anches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment/3.3/Data/tai10a.dat
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment/3.3/Data/tai10a.dat	(revision 6732)
+++ 	(revision )
@@ -1,23 +1,0 @@
- 10
-
-  0 71 11 29 82 82  6 71  8 77
- 71  0 74 30 89 76 76 40 93 56
- 11 74  0  1 50  4 36 27 85  2
- 29 30  1  0  1 15 11 35 11 20
- 82 89 50  1  0 21 61 80 58 21
- 82 76  4 15 21  0 76 72 44 85
-  6 76 36 11 61 76  0 94 90 51
- 71 40 27 35 80 72 94  0  3 48
-  8 93 85 11 58 44 90  3  0 29
- 77 56  2 20 21 85 51 48 29  0
-
-  0 21 95 82 56 41  6 25 10  4
- 21  0 63  6 44 40 75 79  0 89
- 95 63  0 35  9  1 85 84 12  0
- 82  6 35  0 26 91 11 35 82 26
- 56 44  9 26  0 69 56 86 45 91
- 41 40  1 91 69  0 59 18 76 39
-  6 75 85 11 56 59  0 18 57 36
- 25 79 84 35 86 18 18  0 61 36
- 10  0 12 82 45 76 57 61  0 21
-  4 89  0 26 91 39 36 36 21  0
Index: anches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment/3.3/Data/tai10b.dat
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment/3.3/Data/tai10b.dat	(revision 6732)
+++ 	(revision )
@@ -1,23 +1,0 @@
-  10
-
-     0    19    78    60    79    45    65    37   103    34
-    19     0    65    45    76    63    79    22   109    19
-    78    65     0    21    44   113   104    72    97    73
-    60    45    21     0    53    99    97    50   102    51
-    79    76    44    53     0    98    74    93    54    92
-    45    63   113    99    98     0    42    81    97    78
-    65    79   104    97    74    42     0   100    57    98
-    37    22    72    50    93    81   100     0   130     3
-   103   109    97   102    54    97    57   130     0   128
-    34    19    73    51    92    78    98     3   128     0
-    0     1     0     2     0     0    15     0     0   172
-   171    0     0    14     0    61    30     0   886    45
-    43     0    0  2106     1     0     0     0     0     0
-   361     0     0    0     0     0     0     0     0     0
-     2   123     1     0    0    49    18     0   335  2417
-  1096     0     0     0     0    0   952     5     0     0
-   207  3703    27     0     4     0    0     0   202     0
-    16    58     0     0     0     0   546    0    42  1213
-     0     0     0    53     0   546     7  2649    0    86
-     0     0  6707     1    12  7124     1     0     1    0
- 
Index: /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment/3.3/HeuristicLab.Problems.QuadraticAssignment-3.3.csproj
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment/3.3/HeuristicLab.Problems.QuadraticAssignment-3.3.csproj	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Problems.QuadraticAssignment/3.3/HeuristicLab.Problems.QuadraticAssignment-3.3.csproj	(revision 6733)
@@ -233,6 +233,4 @@
     <EmbeddedResource Include="Data\tai100a.dat" />
     <EmbeddedResource Include="Data\tai100b.dat" />
-    <EmbeddedResource Include="Data\tai10a.dat" />
-    <EmbeddedResource Include="Data\tai10b.dat" />
     <EmbeddedResource Include="Data\tai12a.dat" />
     <EmbeddedResource Include="Data\tai12b.dat" />
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances.QAPInitializer/Program.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances.QAPInitializer/Program.cs	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances.QAPInitializer/Program.cs	(revision 6733)
@@ -1,3 +1,4 @@
 ﻿using System;
+using System.Linq;
 using System.Text;
 using HeuristicLab.Problems.QuadraticAssignment;
@@ -10,27 +11,35 @@
         foreach (string instance in qap.EmbeddedInstances) {
           qap.LoadEmbeddedInstance(instance);
-          // transform matrices into jagged arrays
-          double[][] weights = new double[qap.Weights.Rows][];
-          double[][] distances = new double[qap.Weights.Rows][];
-          for (int i = 0; i < weights.Length; i++) {
-            weights[i] = new double[weights.Length];
-            distances[i] = new double[weights.Length];
-            for (int j = 0; j < weights.Length; j++) {
-              weights[i][j] = qap.Weights[i, j];
-              distances[i][j] = qap.Distances[i, j];
+          // transform DoubleMatrix into multidimensional array
+          double[,] weights = new double[qap.Weights.Rows, qap.Weights.Columns];
+          double[,] distances = new double[qap.Distances.Rows, qap.Distances.Columns];
+          for (int i = 0; i < weights.GetLength(0); i++) {
+            for (int j = 0; j < weights.GetLength(1); j++) {
+              weights[i, j] = qap.Weights[i, j];
+              distances[i, j] = qap.Distances[i, j];
             }
           }
 
           QAPInstance dbInstance = context.CreateObject<QAPInstance>();
-          dbInstance.name = qap.Name;
-          dbInstance.description = qap.Description;
-          dbInstance.maximization = qap.Maximization.Value;
-          dbInstance.weights = PrimitiveSerializer.SerializeDoubleMatrix(weights);
-          dbInstance.weights_sha1 = GetSHA1Hash(dbInstance.weights);
-          dbInstance.distances = PrimitiveSerializer.SerializeDoubleMatrix(distances);
-          dbInstance.distances_sha1 = GetSHA1Hash(dbInstance.distances);
-          dbInstance.problemsize = qap.Weights.Rows;
+          dbInstance.Name = qap.Name;
+          dbInstance.Description = qap.Description;
+          dbInstance.Maximization = qap.Maximization.Value;
+          dbInstance.Weights = SimpleSerializer.SerializeDoubleMatrix(weights);
+          dbInstance.WeightsHash = GetSHA1Hash(dbInstance.Weights);
+          dbInstance.Distances = SimpleSerializer.SerializeDoubleMatrix(distances);
+          dbInstance.DistancesHash = GetSHA1Hash(dbInstance.Distances);
+          dbInstance.ProblemSize = qap.Weights.Rows;
+          context.QAPInstances.AddObject(dbInstance);
 
-          context.QAPInstances.AddObject(dbInstance);
+          if (qap.BestKnownQuality != null) {
+            QAPSolution dbSolution = context.CreateObject<QAPSolution>();
+            if (qap.BestKnownSolution != null) {
+              dbSolution.Assignment = SimpleSerializer.SerializeIntArray(qap.BestKnownSolution.ToArray());
+              dbSolution.AssignmentHash = GetSHA1Hash(dbSolution.Assignment);
+            }
+            dbSolution.Instance = dbInstance;
+            dbSolution.Quality = qap.BestKnownQuality.Value;
+            context.QAPSolutions.AddObject(dbSolution);
+          }
         }
         context.SaveChanges();
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances.QAPInitializer/app.config
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances.QAPInitializer/app.config	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances.QAPInitializer/app.config	(revision 6733)
@@ -6,5 +6,5 @@
     </system.serviceModel>
   <connectionStrings>
-    <add name="ProblemInstancesEntities" connectionString="metadata=res://*/ProblemInstancesModel.csdl|res://*/ProblemInstancesModel.ssdl|res://*/ProblemInstancesModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MRPINK\SQLEXPRESS;Initial Catalog=ProblemInstances;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
+    <add name="ProblemInstancesEntities" connectionString="metadata=res://*/ProblemInstancesModel.csdl|res://*/ProblemInstancesModel.ssdl|res://*/ProblemInstancesModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MRPINK\SQLEXPRESS;Initial Catalog=HeuristicLab.ProblemInstances;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
   </connectionStrings>
 </configuration>
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Auxiliary.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Auxiliary.cs	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Auxiliary.cs	(revision 6733)
@@ -0,0 +1,46 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Text;
+
+namespace HeuristicLab.Services.ProblemInstances {
+  public class Auxiliary {
+    public static string GetSHA1Hash(string text) {
+      var SHA1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
+
+      byte[] arrayData;
+      byte[] arrayResult;
+      string result = null;
+      string temp = null;
+
+      arrayData = Encoding.ASCII.GetBytes(text);
+      arrayResult = SHA1.ComputeHash(arrayData);
+      for (int i = 0; i < arrayResult.Length; i++) {
+        temp = Convert.ToString(arrayResult[i], 16);
+        if (temp.Length == 1)
+          temp = "0" + temp;
+        result += temp;
+      }
+      return result;
+    }
+  }
+}
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/HeuristicLab.Services.ProblemInstances-3.3.Publish.xml
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/HeuristicLab.Services.ProblemInstances-3.3.Publish.xml	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/HeuristicLab.Services.ProblemInstances-3.3.Publish.xml	(revision 6733)
@@ -0,0 +1,4 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<publishData>
+  <publishProfile publishUrl="services.heuristiclab.com" deleteExistingFiles="False" ftpAnonymousLogin="False" ftpPassiveMode="True" msdeploySite="services.heuristiclab.com/ProblemInstances-3.3" msdeploySiteID="" msdeployRemoteSitePhysicalPath="" msdeployAllowUntrustedCertificate="True" msdeploySkipExtraFilesOnServer="True" msdeployMarkAsApp="False" profileName="Publish to services.heuristiclab.com" publishMethod="MSDeploy" replaceMatchingFiles="True" userName="" savePWD="False" userPWD="" SelectedForPublish="True" />
+</publishData>
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/HeuristicLab.Services.ProblemInstances-3.3.csproj
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/HeuristicLab.Services.ProblemInstances-3.3.csproj	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/HeuristicLab.Services.ProblemInstances-3.3.csproj	(revision 6733)
@@ -23,4 +23,16 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <PublishDatabaseSettings>
+      <Objects>
+        <ObjectGroup Name="ProblemInstancesEntities-Deployment" Order="1">
+          <Destination Path="" />
+          <Object Type="dbFullSql">
+            <PreSource Path="Data Source=LOCALHOST\SQLEXPRESS%3bInitial Catalog=HeuristicLab.ProblemInstances%3bIntegrated Security=True%3bPooling=False" ScriptSchema="True" ScriptData="False" CopyAllFullTextCatalogs="False" />
+            <Source Path="obj\Debug\AutoScripts\ProblemInstancesEntities-Deployment_SchemaOnly.sql" Transacted="True" />
+          </Object>
+        </ObjectGroup>
+      </Objects>
+    </PublishDatabaseSettings>
+    <ExcludeGeneratedDebugSymbol>false</ExcludeGeneratedDebugSymbol>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -31,4 +43,15 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <PublishDatabaseSettings>
+      <Objects>
+      </Objects>
+    </PublishDatabaseSettings>
+    <ExcludeGeneratedDebugSymbol>true</ExcludeGeneratedDebugSymbol>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
   </PropertyGroup>
   <ItemGroup>
@@ -55,6 +78,9 @@
   </ItemGroup>
   <ItemGroup>
+    <None Include="QAP\Initial.sql" />
     <Content Include="QAP\QAP.svc" />
-    <Content Include="Web.config" />
+    <Content Include="Web.config">
+      <SubType>Designer</SubType>
+    </Content>
     <Content Include="Web.Debug.config">
       <DependentUpon>Web.config</DependentUpon>
@@ -69,7 +95,9 @@
       <LastGenOutput>ProblemInstancesModel.Designer.cs</LastGenOutput>
     </EntityDeploy>
+    <None Include="HeuristicLab.snk" />
     <None Include="Properties\AssemblyInfo.frame" />
-    <Compile Include="PrimitiveSerializationException.cs" />
-    <Compile Include="PrimitiveSerializer.cs" />
+    <Compile Include="Auxiliary.cs" />
+    <Compile Include="SimpleSerializationException.cs" />
+    <Compile Include="SimpleSerializer.cs" />
     <Compile Include="ProblemInstancesModel.Designer.cs">
       <AutoGen>True</AutoGen>
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/ProblemInstancesModel.Designer.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/ProblemInstancesModel.Designer.cs	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/ProblemInstancesModel.Designer.cs	(revision 6733)
@@ -19,5 +19,5 @@
 #region EDM Relationship Metadata
 
-[assembly: EdmRelationshipAttribute("ProblemInstancesModel", "FK_QAPSolution_QAPInstance", "QAPInstance", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(HeuristicLab.Services.ProblemInstances.QAPInstance), "QAPSolution", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(HeuristicLab.Services.ProblemInstances.QAPSolution), true)]
+[assembly: EdmRelationshipAttribute("ProblemInstancesModel", "FK_QAPSolution_QAPInstance1", "QAPInstance", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(HeuristicLab.Services.ProblemInstances.QAPInstance), "QAPSolution", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(HeuristicLab.Services.ProblemInstances.QAPSolution), true)]
 
 #endregion
@@ -143,21 +143,21 @@
         /// Create a new QAPInstance object.
         /// </summary>
-        /// <param name="name">Initial value of the name property.</param>
-        /// <param name="maximization">Initial value of the maximization property.</param>
-        /// <param name="weights">Initial value of the weights property.</param>
-        /// <param name="weights_sha1">Initial value of the weights_sha1 property.</param>
-        /// <param name="distances">Initial value of the distances property.</param>
-        /// <param name="distances_sha1">Initial value of the distances_sha1 property.</param>
-        /// <param name="problemsize">Initial value of the problemsize property.</param>
-        public static QAPInstance CreateQAPInstance(global::System.String name, global::System.Boolean maximization, global::System.String weights, global::System.String weights_sha1, global::System.String distances, global::System.String distances_sha1, global::System.Int32 problemsize)
+        /// <param name="name">Initial value of the Name property.</param>
+        /// <param name="maximization">Initial value of the Maximization property.</param>
+        /// <param name="weights">Initial value of the Weights property.</param>
+        /// <param name="weightsHash">Initial value of the WeightsHash property.</param>
+        /// <param name="distances">Initial value of the Distances property.</param>
+        /// <param name="distancesHash">Initial value of the DistancesHash property.</param>
+        /// <param name="problemSize">Initial value of the ProblemSize property.</param>
+        public static QAPInstance CreateQAPInstance(global::System.String name, global::System.Boolean maximization, global::System.String weights, global::System.String weightsHash, global::System.String distances, global::System.String distancesHash, global::System.Int32 problemSize)
         {
             QAPInstance qAPInstance = new QAPInstance();
-            qAPInstance.name = name;
-            qAPInstance.maximization = maximization;
-            qAPInstance.weights = weights;
-            qAPInstance.weights_sha1 = weights_sha1;
-            qAPInstance.distances = distances;
-            qAPInstance.distances_sha1 = distances_sha1;
-            qAPInstance.problemsize = problemsize;
+            qAPInstance.Name = name;
+            qAPInstance.Maximization = maximization;
+            qAPInstance.Weights = weights;
+            qAPInstance.WeightsHash = weightsHash;
+            qAPInstance.Distances = distances;
+            qAPInstance.DistancesHash = distancesHash;
+            qAPInstance.ProblemSize = problemSize;
             return qAPInstance;
         }
@@ -171,25 +171,25 @@
         [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
         [DataMemberAttribute()]
-        public global::System.String name
-        {
-            get
-            {
-                return _name;
-            }
-            set
-            {
-                if (_name != value)
+        public global::System.String Name
+        {
+            get
+            {
+                return _Name;
+            }
+            set
+            {
+                if (_Name != value)
                 {
-                    OnnameChanging(value);
-                    ReportPropertyChanging("name");
-                    _name = StructuralObject.SetValidValue(value, false);
-                    ReportPropertyChanged("name");
-                    OnnameChanged();
+                    OnNameChanging(value);
+                    ReportPropertyChanging("Name");
+                    _Name = StructuralObject.SetValidValue(value, false);
+                    ReportPropertyChanged("Name");
+                    OnNameChanged();
                 }
             }
         }
-        private global::System.String _name;
-        partial void OnnameChanging(global::System.String value);
-        partial void OnnameChanged();
+        private global::System.String _Name;
+        partial void OnNameChanging(global::System.String value);
+        partial void OnNameChanged();
     
         /// <summary>
@@ -198,166 +198,166 @@
         [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
         [DataMemberAttribute()]
-        public global::System.String description
-        {
-            get
-            {
-                return _description;
-            }
-            set
-            {
-                OndescriptionChanging(value);
-                ReportPropertyChanging("description");
-                _description = StructuralObject.SetValidValue(value, true);
-                ReportPropertyChanged("description");
-                OndescriptionChanged();
-            }
-        }
-        private global::System.String _description;
-        partial void OndescriptionChanging(global::System.String value);
-        partial void OndescriptionChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.Boolean maximization
-        {
-            get
-            {
-                return _maximization;
-            }
-            set
-            {
-                OnmaximizationChanging(value);
-                ReportPropertyChanging("maximization");
-                _maximization = StructuralObject.SetValidValue(value);
-                ReportPropertyChanged("maximization");
-                OnmaximizationChanged();
-            }
-        }
-        private global::System.Boolean _maximization;
-        partial void OnmaximizationChanging(global::System.Boolean value);
-        partial void OnmaximizationChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String weights
-        {
-            get
-            {
-                return _weights;
-            }
-            set
-            {
-                OnweightsChanging(value);
-                ReportPropertyChanging("weights");
-                _weights = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("weights");
-                OnweightsChanged();
-            }
-        }
-        private global::System.String _weights;
-        partial void OnweightsChanging(global::System.String value);
-        partial void OnweightsChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String weights_sha1
-        {
-            get
-            {
-                return _weights_sha1;
-            }
-            set
-            {
-                Onweights_sha1Changing(value);
-                ReportPropertyChanging("weights_sha1");
-                _weights_sha1 = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("weights_sha1");
-                Onweights_sha1Changed();
-            }
-        }
-        private global::System.String _weights_sha1;
-        partial void Onweights_sha1Changing(global::System.String value);
-        partial void Onweights_sha1Changed();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String distances
-        {
-            get
-            {
-                return _distances;
-            }
-            set
-            {
-                OndistancesChanging(value);
-                ReportPropertyChanging("distances");
-                _distances = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("distances");
-                OndistancesChanged();
-            }
-        }
-        private global::System.String _distances;
-        partial void OndistancesChanging(global::System.String value);
-        partial void OndistancesChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String distances_sha1
-        {
-            get
-            {
-                return _distances_sha1;
-            }
-            set
-            {
-                Ondistances_sha1Changing(value);
-                ReportPropertyChanging("distances_sha1");
-                _distances_sha1 = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("distances_sha1");
-                Ondistances_sha1Changed();
-            }
-        }
-        private global::System.String _distances_sha1;
-        partial void Ondistances_sha1Changing(global::System.String value);
-        partial void Ondistances_sha1Changed();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.Int32 problemsize
-        {
-            get
-            {
-                return _problemsize;
-            }
-            set
-            {
-                OnproblemsizeChanging(value);
-                ReportPropertyChanging("problemsize");
-                _problemsize = StructuralObject.SetValidValue(value);
-                ReportPropertyChanged("problemsize");
-                OnproblemsizeChanged();
-            }
-        }
-        private global::System.Int32 _problemsize;
-        partial void OnproblemsizeChanging(global::System.Int32 value);
-        partial void OnproblemsizeChanged();
+        public global::System.String Description
+        {
+            get
+            {
+                return _Description;
+            }
+            set
+            {
+                OnDescriptionChanging(value);
+                ReportPropertyChanging("Description");
+                _Description = StructuralObject.SetValidValue(value, true);
+                ReportPropertyChanged("Description");
+                OnDescriptionChanged();
+            }
+        }
+        private global::System.String _Description;
+        partial void OnDescriptionChanging(global::System.String value);
+        partial void OnDescriptionChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.Boolean Maximization
+        {
+            get
+            {
+                return _Maximization;
+            }
+            set
+            {
+                OnMaximizationChanging(value);
+                ReportPropertyChanging("Maximization");
+                _Maximization = StructuralObject.SetValidValue(value);
+                ReportPropertyChanged("Maximization");
+                OnMaximizationChanged();
+            }
+        }
+        private global::System.Boolean _Maximization;
+        partial void OnMaximizationChanging(global::System.Boolean value);
+        partial void OnMaximizationChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String Weights
+        {
+            get
+            {
+                return _Weights;
+            }
+            set
+            {
+                OnWeightsChanging(value);
+                ReportPropertyChanging("Weights");
+                _Weights = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("Weights");
+                OnWeightsChanged();
+            }
+        }
+        private global::System.String _Weights;
+        partial void OnWeightsChanging(global::System.String value);
+        partial void OnWeightsChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String WeightsHash
+        {
+            get
+            {
+                return _WeightsHash;
+            }
+            set
+            {
+                OnWeightsHashChanging(value);
+                ReportPropertyChanging("WeightsHash");
+                _WeightsHash = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("WeightsHash");
+                OnWeightsHashChanged();
+            }
+        }
+        private global::System.String _WeightsHash;
+        partial void OnWeightsHashChanging(global::System.String value);
+        partial void OnWeightsHashChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String Distances
+        {
+            get
+            {
+                return _Distances;
+            }
+            set
+            {
+                OnDistancesChanging(value);
+                ReportPropertyChanging("Distances");
+                _Distances = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("Distances");
+                OnDistancesChanged();
+            }
+        }
+        private global::System.String _Distances;
+        partial void OnDistancesChanging(global::System.String value);
+        partial void OnDistancesChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String DistancesHash
+        {
+            get
+            {
+                return _DistancesHash;
+            }
+            set
+            {
+                OnDistancesHashChanging(value);
+                ReportPropertyChanging("DistancesHash");
+                _DistancesHash = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("DistancesHash");
+                OnDistancesHashChanged();
+            }
+        }
+        private global::System.String _DistancesHash;
+        partial void OnDistancesHashChanging(global::System.String value);
+        partial void OnDistancesHashChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.Int32 ProblemSize
+        {
+            get
+            {
+                return _ProblemSize;
+            }
+            set
+            {
+                OnProblemSizeChanging(value);
+                ReportPropertyChanging("ProblemSize");
+                _ProblemSize = StructuralObject.SetValidValue(value);
+                ReportPropertyChanged("ProblemSize");
+                OnProblemSizeChanged();
+            }
+        }
+        private global::System.Int32 _ProblemSize;
+        partial void OnProblemSizeChanging(global::System.Int32 value);
+        partial void OnProblemSizeChanged();
 
         #endregion
@@ -371,10 +371,10 @@
         [SoapIgnoreAttribute()]
         [DataMemberAttribute()]
-        [EdmRelationshipNavigationPropertyAttribute("ProblemInstancesModel", "FK_QAPSolution_QAPInstance", "QAPSolution")]
-        public EntityCollection<QAPSolution> QAPSolutions
-        {
-            get
-            {
-                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<QAPSolution>("ProblemInstancesModel.FK_QAPSolution_QAPInstance", "QAPSolution");
+        [EdmRelationshipNavigationPropertyAttribute("ProblemInstancesModel", "FK_QAPSolution_QAPInstance1", "QAPSolution")]
+        public EntityCollection<QAPSolution> Solutions
+        {
+            get
+            {
+                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<QAPSolution>("ProblemInstancesModel.FK_QAPSolution_QAPInstance1", "QAPSolution");
             }
             set
@@ -382,5 +382,5 @@
                 if ((value != null))
                 {
-                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<QAPSolution>("ProblemInstancesModel.FK_QAPSolution_QAPInstance", "QAPSolution", value);
+                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<QAPSolution>("ProblemInstancesModel.FK_QAPSolution_QAPInstance1", "QAPSolution", value);
                 }
             }
@@ -403,17 +403,17 @@
         /// Create a new QAPSolution object.
         /// </summary>
-        /// <param name="id">Initial value of the id property.</param>
-        /// <param name="name">Initial value of the name property.</param>
-        /// <param name="assignment">Initial value of the assignment property.</param>
-        /// <param name="assignment_sha1">Initial value of the assignment_sha1 property.</param>
-        /// <param name="quality">Initial value of the quality property.</param>
-        public static QAPSolution CreateQAPSolution(global::System.Int32 id, global::System.String name, global::System.String assignment, global::System.String assignment_sha1, global::System.Double quality)
+        /// <param name="id">Initial value of the Id property.</param>
+        /// <param name="name">Initial value of the Name property.</param>
+        /// <param name="assignment">Initial value of the Assignment property.</param>
+        /// <param name="assignmentHash">Initial value of the AssignmentHash property.</param>
+        /// <param name="quality">Initial value of the Quality property.</param>
+        public static QAPSolution CreateQAPSolution(global::System.Int32 id, global::System.String name, global::System.String assignment, global::System.String assignmentHash, global::System.Double quality)
         {
             QAPSolution qAPSolution = new QAPSolution();
-            qAPSolution.id = id;
-            qAPSolution.name = name;
-            qAPSolution.assignment = assignment;
-            qAPSolution.assignment_sha1 = assignment_sha1;
-            qAPSolution.quality = quality;
+            qAPSolution.Id = id;
+            qAPSolution.Name = name;
+            qAPSolution.Assignment = assignment;
+            qAPSolution.AssignmentHash = assignmentHash;
+            qAPSolution.Quality = quality;
             return qAPSolution;
         }
@@ -427,121 +427,121 @@
         [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
         [DataMemberAttribute()]
-        public global::System.Int32 id
-        {
-            get
-            {
-                return _id;
-            }
-            set
-            {
-                if (_id != value)
+        public global::System.Int32 Id
+        {
+            get
+            {
+                return _Id;
+            }
+            set
+            {
+                if (_Id != value)
                 {
-                    OnidChanging(value);
-                    ReportPropertyChanging("id");
-                    _id = StructuralObject.SetValidValue(value);
-                    ReportPropertyChanged("id");
-                    OnidChanged();
+                    OnIdChanging(value);
+                    ReportPropertyChanging("Id");
+                    _Id = StructuralObject.SetValidValue(value);
+                    ReportPropertyChanged("Id");
+                    OnIdChanged();
                 }
             }
         }
-        private global::System.Int32 _id;
-        partial void OnidChanging(global::System.Int32 value);
-        partial void OnidChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String name
-        {
-            get
-            {
-                return _name;
-            }
-            set
-            {
-                OnnameChanging(value);
-                ReportPropertyChanging("name");
-                _name = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("name");
-                OnnameChanged();
-            }
-        }
-        private global::System.String _name;
-        partial void OnnameChanging(global::System.String value);
-        partial void OnnameChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String assignment
-        {
-            get
-            {
-                return _assignment;
-            }
-            set
-            {
-                OnassignmentChanging(value);
-                ReportPropertyChanging("assignment");
-                _assignment = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("assignment");
-                OnassignmentChanged();
-            }
-        }
-        private global::System.String _assignment;
-        partial void OnassignmentChanging(global::System.String value);
-        partial void OnassignmentChanged();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.String assignment_sha1
-        {
-            get
-            {
-                return _assignment_sha1;
-            }
-            set
-            {
-                Onassignment_sha1Changing(value);
-                ReportPropertyChanging("assignment_sha1");
-                _assignment_sha1 = StructuralObject.SetValidValue(value, false);
-                ReportPropertyChanged("assignment_sha1");
-                Onassignment_sha1Changed();
-            }
-        }
-        private global::System.String _assignment_sha1;
-        partial void Onassignment_sha1Changing(global::System.String value);
-        partial void Onassignment_sha1Changed();
-    
-        /// <summary>
-        /// No Metadata Documentation available.
-        /// </summary>
-        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
-        [DataMemberAttribute()]
-        public global::System.Double quality
-        {
-            get
-            {
-                return _quality;
-            }
-            set
-            {
-                OnqualityChanging(value);
-                ReportPropertyChanging("quality");
-                _quality = StructuralObject.SetValidValue(value);
-                ReportPropertyChanged("quality");
-                OnqualityChanged();
-            }
-        }
-        private global::System.Double _quality;
-        partial void OnqualityChanging(global::System.Double value);
-        partial void OnqualityChanged();
+        private global::System.Int32 _Id;
+        partial void OnIdChanging(global::System.Int32 value);
+        partial void OnIdChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String Name
+        {
+            get
+            {
+                return _Name;
+            }
+            set
+            {
+                OnNameChanging(value);
+                ReportPropertyChanging("Name");
+                _Name = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("Name");
+                OnNameChanged();
+            }
+        }
+        private global::System.String _Name;
+        partial void OnNameChanging(global::System.String value);
+        partial void OnNameChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String Assignment
+        {
+            get
+            {
+                return _Assignment;
+            }
+            set
+            {
+                OnAssignmentChanging(value);
+                ReportPropertyChanging("Assignment");
+                _Assignment = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("Assignment");
+                OnAssignmentChanged();
+            }
+        }
+        private global::System.String _Assignment;
+        partial void OnAssignmentChanging(global::System.String value);
+        partial void OnAssignmentChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.String AssignmentHash
+        {
+            get
+            {
+                return _AssignmentHash;
+            }
+            set
+            {
+                OnAssignmentHashChanging(value);
+                ReportPropertyChanging("AssignmentHash");
+                _AssignmentHash = StructuralObject.SetValidValue(value, false);
+                ReportPropertyChanged("AssignmentHash");
+                OnAssignmentHashChanged();
+            }
+        }
+        private global::System.String _AssignmentHash;
+        partial void OnAssignmentHashChanging(global::System.String value);
+        partial void OnAssignmentHashChanged();
+    
+        /// <summary>
+        /// No Metadata Documentation available.
+        /// </summary>
+        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
+        [DataMemberAttribute()]
+        public global::System.Double Quality
+        {
+            get
+            {
+                return _Quality;
+            }
+            set
+            {
+                OnQualityChanging(value);
+                ReportPropertyChanging("Quality");
+                _Quality = StructuralObject.SetValidValue(value);
+                ReportPropertyChanged("Quality");
+                OnQualityChanged();
+            }
+        }
+        private global::System.Double _Quality;
+        partial void OnQualityChanging(global::System.Double value);
+        partial void OnQualityChanged();
 
         #endregion
@@ -555,14 +555,14 @@
         [SoapIgnoreAttribute()]
         [DataMemberAttribute()]
-        [EdmRelationshipNavigationPropertyAttribute("ProblemInstancesModel", "FK_QAPSolution_QAPInstance", "QAPInstance")]
-        public QAPInstance QAPInstance
-        {
-            get
-            {
-                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<QAPInstance>("ProblemInstancesModel.FK_QAPSolution_QAPInstance", "QAPInstance").Value;
-            }
-            set
-            {
-                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<QAPInstance>("ProblemInstancesModel.FK_QAPSolution_QAPInstance", "QAPInstance").Value = value;
+        [EdmRelationshipNavigationPropertyAttribute("ProblemInstancesModel", "FK_QAPSolution_QAPInstance1", "QAPInstance")]
+        public QAPInstance Instance
+        {
+            get
+            {
+                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<QAPInstance>("ProblemInstancesModel.FK_QAPSolution_QAPInstance1", "QAPInstance").Value;
+            }
+            set
+            {
+                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<QAPInstance>("ProblemInstancesModel.FK_QAPSolution_QAPInstance1", "QAPInstance").Value = value;
             }
         }
@@ -572,9 +572,9 @@
         [BrowsableAttribute(false)]
         [DataMemberAttribute()]
-        public EntityReference<QAPInstance> QAPInstanceReference
-        {
-            get
-            {
-                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<QAPInstance>("ProblemInstancesModel.FK_QAPSolution_QAPInstance", "QAPInstance");
+        public EntityReference<QAPInstance> InstanceReference
+        {
+            get
+            {
+                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<QAPInstance>("ProblemInstancesModel.FK_QAPSolution_QAPInstance1", "QAPInstance");
             }
             set
@@ -582,5 +582,5 @@
                 if ((value != null))
                 {
-                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<QAPInstance>("ProblemInstancesModel.FK_QAPSolution_QAPInstance", "QAPInstance", value);
+                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<QAPInstance>("ProblemInstancesModel.FK_QAPSolution_QAPInstance1", "QAPInstance", value);
                 }
             }
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/ProblemInstancesModel.edmx
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/ProblemInstancesModel.edmx	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/ProblemInstancesModel.edmx	(revision 6733)
@@ -5,5 +5,5 @@
     <!-- SSDL content -->
     <edmx:StorageModels>
-      <Schema Namespace="ProblemInstancesModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
+    <Schema Namespace="ProblemInstancesModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
         <EntityContainer Name="ProblemInstancesModelStoreContainer">
           <EntitySet Name="QAPInstance" EntityType="ProblemInstancesModel.Store.QAPInstance" store:Type="Tables" Schema="dbo" />
@@ -16,24 +16,24 @@
         <EntityType Name="QAPInstance">
           <Key>
-            <PropertyRef Name="name" />
+            <PropertyRef Name="Name" />
           </Key>
-          <Property Name="name" Type="nvarchar" Nullable="false" MaxLength="64" />
-          <Property Name="description" Type="ntext" />
-          <Property Name="maximization" Type="bit" Nullable="false" />
-          <Property Name="weights" Type="text" Nullable="false" />
-          <Property Name="weights_sha1" Type="char" Nullable="false" MaxLength="40" />
-          <Property Name="distances" Type="text" Nullable="false" />
-          <Property Name="distances_sha1" Type="char" Nullable="false" MaxLength="40" />
-          <Property Name="problemsize" Type="int" Nullable="false" />
+          <Property Name="Name" Type="nvarchar" Nullable="false" MaxLength="64" />
+          <Property Name="Description" Type="ntext" />
+          <Property Name="Maximization" Type="bit" Nullable="false" />
+          <Property Name="Weights" Type="varchar(max)" Nullable="false" />
+          <Property Name="WeightsHash" Type="char" Nullable="false" MaxLength="40" />
+          <Property Name="Distances" Type="varchar(max)" Nullable="false" />
+          <Property Name="DistancesHash" Type="char" Nullable="false" MaxLength="40" />
+          <Property Name="ProblemSize" Type="int" Nullable="false" />
         </EntityType>
         <EntityType Name="QAPSolution">
           <Key>
-            <PropertyRef Name="id" />
+            <PropertyRef Name="Id" />
           </Key>
-          <Property Name="id" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
-          <Property Name="name" Type="nvarchar" Nullable="false" MaxLength="64" />
-          <Property Name="assignment" Type="text" Nullable="false" />
-          <Property Name="assignment_sha1" Type="char" Nullable="false" MaxLength="40" />
-          <Property Name="quality" Type="float" Nullable="false" />
+          <Property Name="Id" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
+          <Property Name="Name" Type="nvarchar" Nullable="false" MaxLength="64" />
+          <Property Name="Assignment" Type="text" />
+          <Property Name="AssignmentHash" Type="char" MaxLength="40" />
+          <Property Name="Quality" Type="float" Nullable="false" />
         </EntityType>
         <Association Name="FK_QAPSolution_QAPInstance">
@@ -44,13 +44,12 @@
           <ReferentialConstraint>
             <Principal Role="QAPInstance">
-              <PropertyRef Name="name" />
+              <PropertyRef Name="Name" />
             </Principal>
             <Dependent Role="QAPSolution">
-              <PropertyRef Name="name" />
+              <PropertyRef Name="Name" />
             </Dependent>
           </ReferentialConstraint>
         </Association>
-      </Schema>
-    </edmx:StorageModels>
+      </Schema></edmx:StorageModels>
     <!-- CSDL content -->
     <edmx:ConceptualModels>
@@ -59,5 +58,5 @@
           <EntitySet Name="QAPInstances" EntityType="ProblemInstancesModel.QAPInstance" />
           <EntitySet Name="QAPSolutions" EntityType="ProblemInstancesModel.QAPSolution" />
-          <AssociationSet Name="FK_QAPSolution_QAPInstance" Association="ProblemInstancesModel.FK_QAPSolution_QAPInstance">
+          <AssociationSet Name="FK_QAPSolution_QAPInstance1" Association="ProblemInstancesModel.FK_QAPSolution_QAPInstance1">
             <End Role="QAPInstance" EntitySet="QAPInstances" />
             <End Role="QAPSolution" EntitySet="QAPSolutions" />
@@ -66,38 +65,36 @@
         <EntityType Name="QAPInstance">
           <Key>
-            <PropertyRef Name="name" />
+            <PropertyRef Name="Name" />
           </Key>
-          <Property Name="name" Type="String" Nullable="false" MaxLength="64" Unicode="true" FixedLength="false" />
-          <Property Name="description" Type="String" MaxLength="Max" Unicode="true" FixedLength="false" />
-          <Property Name="maximization" Type="Boolean" Nullable="false" />
-          <Property Name="weights" Type="String" Nullable="false" MaxLength="Max" Unicode="false" FixedLength="false" />
-          <Property Name="weights_sha1" Type="String" Nullable="false" MaxLength="40" Unicode="false" FixedLength="true" />
-          <Property Name="distances" Type="String" Nullable="false" MaxLength="Max" Unicode="false" FixedLength="false" />
-          <Property Name="distances_sha1" Type="String" Nullable="false" MaxLength="40" Unicode="false" FixedLength="true" />
-          <Property Name="problemsize" Type="Int32" Nullable="false" />
-          <NavigationProperty Name="QAPSolutions" Relationship="ProblemInstancesModel.FK_QAPSolution_QAPInstance" FromRole="QAPInstance" ToRole="QAPSolution" />
+          <Property Type="String" Name="Name" Nullable="false" MaxLength="64" FixedLength="false" Unicode="true" />
+          <Property Type="String" Name="Description" MaxLength="Max" FixedLength="false" Unicode="true" />
+          <Property Type="Boolean" Name="Maximization" Nullable="false" />
+          <Property Type="String" Name="Weights" Nullable="false" MaxLength="Max" FixedLength="false" Unicode="false" />
+          <Property Type="String" Name="WeightsHash" Nullable="false" MaxLength="40" FixedLength="true" Unicode="false" />
+          <Property Type="String" Name="Distances" Nullable="false" MaxLength="Max" FixedLength="false" Unicode="false" />
+          <Property Type="String" Name="DistancesHash" Nullable="false" MaxLength="40" FixedLength="true" Unicode="false" />
+          <NavigationProperty Name="Solutions" Relationship="ProblemInstancesModel.FK_QAPSolution_QAPInstance1" FromRole="QAPInstance" ToRole="QAPSolution" />
+          <Property Type="Int32" Name="ProblemSize" Nullable="false" />
         </EntityType>
         <EntityType Name="QAPSolution">
           <Key>
-            <PropertyRef Name="id" />
+            <PropertyRef Name="Id" />
           </Key>
-          <Property Name="id" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
-          <Property Name="name" Type="String" Nullable="false" MaxLength="64" Unicode="true" FixedLength="false" />
-          <Property Name="assignment" Type="String" Nullable="false" MaxLength="Max" Unicode="false" FixedLength="false" />
-          <Property Name="assignment_sha1" Type="String" Nullable="false" MaxLength="40" Unicode="false" FixedLength="true" />
-          <Property Name="quality" Type="Double" Nullable="false" />
-          <NavigationProperty Name="QAPInstance" Relationship="ProblemInstancesModel.FK_QAPSolution_QAPInstance" FromRole="QAPSolution" ToRole="QAPInstance" />
+          <Property Type="Int32" Name="Id" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
+          <Property Type="String" Name="Name" Nullable="false" MaxLength="64" FixedLength="false" Unicode="true" />
+          <Property Type="String" Name="Assignment" Nullable="false" MaxLength="Max" FixedLength="false" Unicode="false" />
+          <Property Type="String" Name="AssignmentHash" Nullable="false" MaxLength="40" FixedLength="true" Unicode="false" />
+          <Property Type="Double" Name="Quality" Nullable="false" />
+          <NavigationProperty Name="Instance" Relationship="ProblemInstancesModel.FK_QAPSolution_QAPInstance1" FromRole="QAPSolution" ToRole="QAPInstance" />
         </EntityType>
-        <Association Name="FK_QAPSolution_QAPInstance">
-          <End Role="QAPInstance" Type="ProblemInstancesModel.QAPInstance" Multiplicity="1">
-            <OnDelete Action="Cascade" />
-          </End>
-          <End Role="QAPSolution" Type="ProblemInstancesModel.QAPSolution" Multiplicity="*" />
+        <Association Name="FK_QAPSolution_QAPInstance1">
+          <End Type="ProblemInstancesModel.QAPInstance" Role="QAPInstance" Multiplicity="1" />
+          <End Type="ProblemInstancesModel.QAPSolution" Role="QAPSolution" Multiplicity="*" />
           <ReferentialConstraint>
             <Principal Role="QAPInstance">
-              <PropertyRef Name="name" />
+              <PropertyRef Name="Name" />
             </Principal>
             <Dependent Role="QAPSolution">
-              <PropertyRef Name="name" />
+              <PropertyRef Name="Name" />
             </Dependent>
           </ReferentialConstraint>
@@ -110,20 +107,20 @@
         <EntityContainerMapping StorageEntityContainer="ProblemInstancesModelStoreContainer" CdmEntityContainer="ProblemInstancesEntities">
           <EntitySetMapping Name="QAPInstances"><EntityTypeMapping TypeName="ProblemInstancesModel.QAPInstance"><MappingFragment StoreEntitySet="QAPInstance">
-            <ScalarProperty Name="name" ColumnName="name" />
-            <ScalarProperty Name="description" ColumnName="description" />
-            <ScalarProperty Name="maximization" ColumnName="maximization" />
-            <ScalarProperty Name="weights" ColumnName="weights" />
-            <ScalarProperty Name="weights_sha1" ColumnName="weights_sha1" />
-            <ScalarProperty Name="distances" ColumnName="distances" />
-            <ScalarProperty Name="distances_sha1" ColumnName="distances_sha1" />
-            <ScalarProperty Name="problemsize" ColumnName="problemsize" />
-          </MappingFragment></EntityTypeMapping></EntitySetMapping>
+            <ScalarProperty Name="ProblemSize" ColumnName="ProblemSize" />
+                <ScalarProperty Name="DistancesHash" ColumnName="DistancesHash" />
+                <ScalarProperty Name="Distances" ColumnName="Distances" />
+                <ScalarProperty Name="WeightsHash" ColumnName="WeightsHash" />
+                <ScalarProperty Name="Weights" ColumnName="Weights" />
+                <ScalarProperty Name="Maximization" ColumnName="Maximization" />
+                <ScalarProperty Name="Description" ColumnName="Description" />
+                <ScalarProperty Name="Name" ColumnName="Name" />
+              </MappingFragment></EntityTypeMapping></EntitySetMapping>
           <EntitySetMapping Name="QAPSolutions"><EntityTypeMapping TypeName="ProblemInstancesModel.QAPSolution"><MappingFragment StoreEntitySet="QAPSolution">
-            <ScalarProperty Name="id" ColumnName="id" />
-            <ScalarProperty Name="name" ColumnName="name" />
-            <ScalarProperty Name="assignment" ColumnName="assignment" />
-            <ScalarProperty Name="assignment_sha1" ColumnName="assignment_sha1" />
-            <ScalarProperty Name="quality" ColumnName="quality" />
-          </MappingFragment></EntityTypeMapping></EntitySetMapping>
+            <ScalarProperty Name="Quality" ColumnName="Quality" />
+                <ScalarProperty Name="AssignmentHash" ColumnName="AssignmentHash" />
+                <ScalarProperty Name="Assignment" ColumnName="Assignment" />
+                <ScalarProperty Name="Name" ColumnName="Name" />
+                <ScalarProperty Name="Id" ColumnName="Id" />
+              </MappingFragment></EntityTypeMapping></EntitySetMapping>
         </EntityContainerMapping>
       </Mapping>
@@ -148,6 +145,6 @@
       <Diagram Name="ProblemInstancesModel">
         <EntityTypeShape EntityType="ProblemInstancesModel.QAPInstance" Width="1.5" PointX="0.75" PointY="1" Height="2.7494921874999996" IsExpanded="true" />
-        <EntityTypeShape EntityType="ProblemInstancesModel.QAPSolution" Width="1.5" PointX="3" PointY="1.25" Height="2.1725878906249996" IsExpanded="true" />
-        <AssociationConnector Association="ProblemInstancesModel.FK_QAPSolution_QAPInstance" ManuallyRouted="false">
+        <EntityTypeShape EntityType="ProblemInstancesModel.QAPSolution" Width="1.5" PointX="3" PointY="1.25" Height="2.172587890625" IsExpanded="true" />
+        <AssociationConnector Association="ProblemInstancesModel.FK_QAPSolution_QAPInstance1" >
           <ConnectorPoint PointX="2.25" PointY="2.3362939453125" />
           <ConnectorPoint PointX="3" PointY="2.3362939453125" />
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/QAP/QAP.svc.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/QAP/QAP.svc.cs	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/QAP/QAP.svc.cs	(revision 6733)
@@ -26,5 +26,5 @@
     public string[] GetProblemInstances() {
       using (ProblemInstancesEntities context = new ProblemInstancesEntities()) {
-        return context.QAPInstances.Select(x => x.name).ToArray();
+        return context.QAPInstances.Select(x => x.Name).ToArray();
       }
     }
@@ -32,5 +32,5 @@
     public QAPInstanceDto GetProblemInstanceData(string instance) {
       using (ProblemInstancesEntities context = new ProblemInstancesEntities()) {
-        return new QAPInstanceDto(context.QAPInstances.Where(x => x.name == instance).Single());
+        return new QAPInstanceDto(context.QAPInstances.Where(x => x.Name == instance).Single());
       }
     }
@@ -38,11 +38,14 @@
     public QAPSolutionDto[] GetBestSolutionsData(string instance) {
       using (ProblemInstancesEntities context = new ProblemInstancesEntities()) {
-        QAPInstance qap = context.QAPInstances.Where(x => x.name == instance).SingleOrDefault();
+        QAPInstance qap = context.QAPInstances.Where(x => x.Name == instance).SingleOrDefault();
         if (qap == null) return new QAPSolutionDto[0];
+        context.LoadProperty<QAPInstance>(qap, x => x.Solutions);
         double best = double.NaN;
-        if (qap.maximization) best = qap.QAPSolutions.Max(x => x.quality);
-        else best = qap.QAPSolutions.Min(x => x.quality);
+        if (!qap.Solutions.Any()) return new QAPSolutionDto[0];
 
-        return qap.QAPSolutions.Where(x => x.quality == best).Select(x => new QAPSolutionDto(x)).ToArray();
+        if (qap.Maximization) best = qap.Solutions.Max(x => x.Quality);
+        else best = qap.Solutions.Min(x => x.Quality);
+
+        return qap.Solutions.Where(x => x.Quality == best).Select(x => new QAPSolutionDto(x)).ToArray();
       }
     }
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/QAP/QAPInstanceDto.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/QAP/QAPInstanceDto.cs	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/QAP/QAPInstanceDto.cs	(revision 6733)
@@ -1,4 +1,3 @@
-﻿
-#region License Information
+﻿#region License Information
 /* HeuristicLab
  * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
@@ -22,4 +21,5 @@
 
 using System;
+using System.Linq;
 using System.Runtime.Serialization;
 
@@ -37,4 +37,8 @@
     [DataMember]
     public double[][] Distances { get; set; }
+    [DataMember]
+    public double BestKnownQuality { get; set; }
+    [DataMember]
+    public bool HasBestKnownQuality { get; set; }
 
     public QAPInstanceDto() {
@@ -43,12 +47,20 @@
 
     public QAPInstanceDto(QAPInstance qAPInstance) {
-      Name = qAPInstance.name;
-      Description = qAPInstance.description;
-      Maximization = qAPInstance.maximization;
+      Name = qAPInstance.Name;
+      Description = qAPInstance.Description;
+      Maximization = qAPInstance.Maximization;
       try {
-        Weights = PrimitiveSerializer.DeserializeDoubleMatrix(qAPInstance.weights);
-        Distances = PrimitiveSerializer.DeserializeDoubleMatrix(qAPInstance.distances);
+        Weights = SimpleSerializer.DeserializeDoubleMatrix(qAPInstance.Weights);
+        Distances = SimpleSerializer.DeserializeDoubleMatrix(qAPInstance.Distances);
       } catch (ArgumentException e) {
-        throw new PrimitiveSerializationException("Failed to deserialize the weights or distance matrix.", e);
+        throw new SimpleSerializationException("Failed to deserialize the weights or distance matrix.", e);
+      }
+      BestKnownQuality = double.NaN;
+      HasBestKnownQuality = false;
+      if (qAPInstance.Solutions.Any()) {
+        double bestQuality;
+        if (Maximization) bestQuality = qAPInstance.Solutions.Max(x => x.Quality);
+        else bestQuality = qAPInstance.Solutions.Min(x => x.Quality);
+        HasBestKnownQuality = true;
       }
     }
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/QAP/QAPSolutionDto.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/QAP/QAPSolutionDto.cs	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/QAP/QAPSolutionDto.cs	(revision 6733)
@@ -1,4 +1,3 @@
-﻿
-#region License Information
+﻿#region License Information
 /* HeuristicLab
  * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
@@ -21,4 +20,5 @@
 #endregion
 
+using System;
 using System.Runtime.Serialization;
 
@@ -27,4 +27,6 @@
   public class QAPSolutionDto {
     [DataMember]
+    public bool AssignmentUndefined { get; set; }
+    [DataMember]
     public int[] Assignment { get; set; }
     [DataMember]
@@ -32,10 +34,12 @@
 
     public QAPSolutionDto() {
-
+      Quality = double.NaN;
     }
 
     public QAPSolutionDto(QAPSolution x) {
-      Assignment = PrimitiveSerializer.DeserializeIntArray(x.assignment);
-      Quality = x.quality;
+      AssignmentUndefined = String.IsNullOrEmpty(x.Assignment);
+      if (!AssignmentUndefined)
+        Assignment = SimpleSerializer.DeserializeIntArray(x.Assignment);
+      Quality = x.Quality;
     }
   }
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/SimpleSerializationException.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/SimpleSerializationException.cs	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/SimpleSerializationException.cs	(revision 6733)
@@ -0,0 +1,30 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+
+namespace HeuristicLab.Services.ProblemInstances {
+  public class SimpleSerializationException : Exception {
+    public SimpleSerializationException() : base() { }
+    public SimpleSerializationException(string message) : base(message) { }
+    public SimpleSerializationException(string message, Exception innerException) : base(message, innerException) { }
+  }
+}
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/SimpleSerializer.cs
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/SimpleSerializer.cs	(revision 6733)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/SimpleSerializer.cs	(revision 6733)
@@ -0,0 +1,166 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Globalization;
+using System.Text;
+
+namespace HeuristicLab.Services.ProblemInstances {
+  public static class SimpleSerializer {
+    #region Double Matrix
+    public static string SerializeDoubleMatrix(double[][] matrix) {
+      StringBuilder builder = new StringBuilder();
+      int dim1 = matrix.Length;
+      int dim2 = matrix[0].Length;
+      builder.Append(dim1.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      builder.Append(";");
+      builder.Append(dim2.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      for (int i = 0; i < dim1; i++) {
+        for (int j = 0; j < dim2; j++) {
+          if (matrix[i].Length != dim2) throw new ArgumentException("ERROR jagged array is not a matrix!");
+          builder.Append(";" + matrix[i][j].ToString(CultureInfo.InvariantCulture.NumberFormat));
+        }
+      }
+      return builder.ToString();
+    }
+    public static string SerializeDoubleMatrix(double[,] matrix) {
+      StringBuilder builder = new StringBuilder();
+      int dim1 = matrix.GetLength(0);
+      int dim2 = matrix.GetLength(1);
+      builder.Append(dim1.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      builder.Append(";");
+      builder.Append(dim2.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      for (int i = 0; i < dim1; i++) {
+        for (int j = 0; j < dim2; j++) {
+          builder.Append(";" + matrix[i, j].ToString(CultureInfo.InvariantCulture.NumberFormat));
+        }
+      }
+      return builder.ToString();
+    }
+
+    public static double[][] DeserializeDoubleMatrix(string data) {
+      string[] tokens = data.Split(';');
+      int dim1 = int.Parse(tokens[0], CultureInfo.InvariantCulture.NumberFormat);
+      int dim2 = int.Parse(tokens[1], CultureInfo.InvariantCulture.NumberFormat);
+      if (tokens.Length != (dim1 * dim2) + 2) throw new SimpleSerializationException("ERROR: serialized data does not represent a matrix!");
+      double[][] result = new double[dim1][];
+      for (int i = 0; i < dim1; i++) {
+        result[i] = new double[dim2];
+        for (int j = 0; j < dim2; j++)
+          result[i][j] = double.Parse(tokens[i * dim1 + j + 2], CultureInfo.InvariantCulture.NumberFormat);
+      }
+      return result;
+    }
+    #endregion
+
+    #region Int Matrix
+    public static string SerializeIntMatrix(int[][] matrix) {
+      StringBuilder builder = new StringBuilder();
+      int dim1 = matrix.Length;
+      int dim2 = matrix[0].Length;
+      builder.Append(dim1.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      builder.Append(";");
+      builder.Append(dim2.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      for (int i = 0; i < dim1; i++) {
+        for (int j = 0; j < dim2; j++) {
+          if (matrix[i].Length != dim2) throw new ArgumentException("ERROR jagged array is not a matrix!");
+          builder.Append(";" + matrix[i][j].ToString(CultureInfo.InvariantCulture.NumberFormat));
+        }
+      }
+      return builder.ToString();
+    }
+    public static string SerializeIntMatrix(int[,] matrix) {
+      StringBuilder builder = new StringBuilder();
+      int dim1 = matrix.GetLength(0);
+      int dim2 = matrix.GetLength(1);
+      builder.Append(dim1.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      builder.Append(";");
+      builder.Append(dim2.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      for (int i = 0; i < dim1; i++) {
+        for (int j = 0; j < dim2; j++) {
+          builder.Append(";" + matrix[i, j].ToString(CultureInfo.InvariantCulture.NumberFormat));
+        }
+      }
+      return builder.ToString();
+    }
+
+    public static int[][] DeserializeIntMatrix(string data) {
+      string[] tokens = data.Split(';');
+      int dim1 = int.Parse(tokens[0], CultureInfo.InvariantCulture.NumberFormat);
+      int dim2 = int.Parse(tokens[1], CultureInfo.InvariantCulture.NumberFormat);
+      if (tokens.Length != (dim1 * dim2) + 2) throw new SimpleSerializationException("ERROR: serialized data does not represent a matrix!");
+      int[][] result = new int[dim1][];
+      for (int i = 0; i < dim1; i++) {
+        result[i] = new int[dim2];
+        for (int j = 0; j < dim2; j++)
+          result[i][j] = int.Parse(tokens[i * dim1 + j + 2], CultureInfo.InvariantCulture.NumberFormat);
+      }
+      return result;
+    }
+    #endregion
+
+    #region Double Array
+    public static string SerializeDoubleArray(double[] array) {
+      StringBuilder builder = new StringBuilder();
+      int dim1 = array.Length;
+      builder.Append(dim1.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      builder.Append(";");
+      for (int i = 0; i < dim1; i++) {
+        builder.Append(";" + array[i].ToString(CultureInfo.InvariantCulture.NumberFormat));
+      }
+      return builder.ToString();
+    }
+
+    public static double[] DeserializeDoubleArray(string array) {
+      string[] tokens = array.Split(';');
+      int dim1 = int.Parse(tokens[0], CultureInfo.InvariantCulture.NumberFormat);
+      double[] result = new double[dim1];
+      for (int i = 0; i < dim1; i++) {
+        result[i] = double.Parse(tokens[i + 1], CultureInfo.InvariantCulture.NumberFormat);
+      }
+      return result;
+    }
+    #endregion
+
+    #region Int Array
+    public static string SerializeIntArray(int[] array) {
+      StringBuilder builder = new StringBuilder();
+      int dim1 = array.Length;
+      builder.Append(dim1.ToString(CultureInfo.InvariantCulture.NumberFormat));
+      builder.Append(";");
+      for (int i = 0; i < dim1; i++) {
+        builder.Append(";" + array[i].ToString(CultureInfo.InvariantCulture.NumberFormat));
+      }
+      return builder.ToString();
+    }
+
+    public static int[] DeserializeIntArray(string array) {
+      string[] tokens = array.Split(';');
+      int dim1 = int.Parse(tokens[0], CultureInfo.InvariantCulture.NumberFormat);
+      int[] result = new int[dim1];
+      for (int i = 0; i < dim1; i++) {
+        result[i] = int.Parse(tokens[i + 1], CultureInfo.InvariantCulture.NumberFormat);
+      }
+      return result;
+    }
+    #endregion
+  }
+}
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Web.Debug.config
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Web.Debug.config	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Web.Debug.config	(revision 6733)
@@ -4,4 +4,6 @@
 
 <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
-
+  <connectionStrings xdt:Transform="Insert">
+    <add name="ProblemInstancesEntities" connectionString="metadata=res://*/ProblemInstancesModel.csdl|res://*/ProblemInstancesModel.ssdl|res://*/ProblemInstancesModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=LOCALHOST\SQLEXPRESS;Initial Catalog=HeuristicLab.ProblemInstances;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
+  </connectionStrings>
 </configuration>
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Web.Release.config
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Web.Release.config	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Web.Release.config	(revision 6733)
@@ -9,3 +9,6 @@
   </system.web>
 
+  <connectionStrings xdt:Transform="Insert">
+    <add name="ProblemInstancesEntities" connectionString="metadata=res://*/ProblemInstancesModel.csdl|res://*/ProblemInstancesModel.ssdl|res://*/ProblemInstancesModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=LOCALHOST;Initial Catalog=HeuristicLab.ProblemInstances;Integrated Security=True&quot;" providerName="System.Data.EntityClient" />
+  </connectionStrings>
 </configuration>
Index: /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Web.config
===================================================================
--- /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Web.config	(revision 6732)
+++ /branches/GeneralizedQAP/HeuristicLab.Services.ProblemInstances/Web.config	(revision 6733)
@@ -9,8 +9,9 @@
       <serviceBehaviors>
         <behavior>
+          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
           <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
           <serviceMetadata httpGetEnabled="true" />
           <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
-          <serviceDebug includeExceptionDetailInFaults="false" />
+          <serviceDebug includeExceptionDetailInFaults="true" />
         </behavior>
       </serviceBehaviors>
@@ -22,3 +23,3 @@
   </system.webServer>
   
-<connectionStrings><add name="ProblemInstancesEntities" connectionString="metadata=res://*/ProblemInstancesModel.csdl|res://*/ProblemInstancesModel.ssdl|res://*/ProblemInstancesModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MRPINK\SQLEXPRESS;Initial Catalog=ProblemInstances;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /></connectionStrings></configuration>
+</configuration>
