Index: branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentArchiveView.Designer.cs
===================================================================
--- branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentArchiveView.Designer.cs	(revision 15688)
+++ branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentArchiveView.Designer.cs	(revision 16728)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentArchiveView.cs
===================================================================
--- branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentArchiveView.cs	(revision 15688)
+++ branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentArchiveView.cs	(revision 16728)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentView.Designer.cs
===================================================================
--- branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentView.Designer.cs	(revision 15688)
+++ branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentView.Designer.cs	(revision 16728)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentView.cs
===================================================================
--- branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentView.cs	(revision 15688)
+++ branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/GQAPAssignmentView.cs	(revision 16728)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -45,4 +45,5 @@
     public GQAPAssignmentView() {
       InitializeComponent();
+      recalculateButton.Text = string.Empty;
       recalculateButton.Image = VSImageLibrary.Refresh;
     }
@@ -50,10 +51,19 @@
     #region Register Content Events
     protected override void DeregisterContentEvents() {
-      Content.PropertyChanged -= new PropertyChangedEventHandler(Content_PropertyChanged);
+      DeregisterSolutionEvents();
+      Content.PropertyChanged -= Content_PropertyChanged;
       base.DeregisterContentEvents();
     }
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.PropertyChanged += new PropertyChangedEventHandler(Content_PropertyChanged);
+      Content.PropertyChanged += Content_PropertyChanged;
+      RegisterSolutionEvents();
+    }
+
+    private void DeregisterSolutionEvents() {
+      if (Content.Solution != null) Content.Solution.PropertyChanged -= Content_SolutionPropertyChanged;
+    }
+    private void RegisterSolutionEvents() {
+      if (Content.Solution != null) Content.Solution.PropertyChanged += Content_SolutionPropertyChanged;
     }
     #endregion
@@ -63,5 +73,5 @@
       UpdateEvaluation();
       UpdateAssignment();
-      if (Content != null) assignmentView.Content = Content.Assignment;
+      if (Content != null && Content.Solution != null) assignmentView.Content = Content.Solution.Assignment;
       else assignmentView.Content = null;
     }
@@ -69,4 +79,5 @@
     protected override void SetEnabledStateOfControls() {
       base.SetEnabledStateOfControls();
+      recalculateButton.Enabled = Content != null && Content.Solution != null && !Locked && !ReadOnly;
     }
 
@@ -74,9 +85,17 @@
     private void Content_PropertyChanged(object sender, PropertyChangedEventArgs e) {
       switch (e.PropertyName) {
-        case nameof(Content.Evaluation): UpdateEvaluation(); break;
-        case nameof(Content.Assignment): UpdateAssignment(); break;
+        case nameof(Content.Solution): RegisterSolutionEvents(); UpdateEvaluation(); UpdateAssignment(); break;
         case nameof(Content.ProblemInstance): UpdateEvaluation(); UpdateAssignment(); break;
         default: break;
       }
+      SetEnabledStateOfControls();
+    }
+
+    private void Content_SolutionPropertyChanged(object sender, PropertyChangedEventArgs e) {
+      switch (e.PropertyName) {
+        case nameof(Content.Solution.Assignment): UpdateAssignment(); break;
+        case nameof(Content.Solution.Evaluation): UpdateEvaluation(); break;
+        default: break;
+      }
     }
 
@@ -88,5 +107,5 @@
     #region Event Handlers
     private void assignmentTreeView_AfterSelect(object sender, TreeViewEventArgs e) {
-      if (Content != null) {
+      if (Content != null && Content.Solution != null) {
         assignmentTreeView.BeginUpdate();
         try {
@@ -120,5 +139,5 @@
       if (InvokeRequired) Invoke((Action)UpdateEvaluation);
       else {
-        if (Content == null) {
+        if (Content == null || Content.Solution == null) {
           qualityLabel.Text = "-";
           flowDistanceQualityLabel.Text = "-";
@@ -126,8 +145,8 @@
           overbookedCapacityLabel.Text = "-";
         } else {
-          qualityLabel.Text = Content.ProblemInstance.ToSingleObjective(Content.Evaluation).ToString();
-          flowDistanceQualityLabel.Text = Content.Evaluation.FlowCosts.ToString();
-          installationQualityLabel.Text = Content.Evaluation.InstallationCosts.ToString();
-          overbookedCapacityLabel.Text = Content.Evaluation.ExcessDemand.ToString();
+          qualityLabel.Text = Content.ProblemInstance.ToSingleObjective(Content.Solution.Evaluation).ToString();
+          flowDistanceQualityLabel.Text = Content.Solution.Evaluation.FlowCosts.ToString();
+          installationQualityLabel.Text = Content.Solution.Evaluation.InstallationCosts.ToString();
+          overbookedCapacityLabel.Text = Content.Solution.Evaluation.ExcessDemand.ToString();
         }
       }
@@ -138,6 +157,6 @@
       else {
         assignmentTreeView.Nodes.Clear();
-        if (Content != null) {
-          IntegerVector assignment = Content.Assignment;
+        if (Content != null && Content.Solution != null) {
+          IntegerVector assignment = Content.Solution.Assignment;
           Dictionary<int, TreeNode> locationNodes = new Dictionary<int, TreeNode>();
           for (int i = 0; i < assignment.Length; i++) {
@@ -169,5 +188,5 @@
       var installationCosts = new Dictionary<EquipmentNode, double>();
       foreach (var node in GetAllSubNodes(assignmentTreeView.Nodes).OfType<EquipmentNode>()) {
-        int location = Content.Assignment[node.Equipment];
+        int location = Content.Solution.Assignment[node.Equipment];
         installationCosts[node] = Content.ProblemInstance.InstallationCosts[node.Equipment, location];
       }
@@ -216,5 +235,5 @@
 
     private void ColorByWeight(LocationNode selectedNode) {
-      var equipments = new HashSet<int>(Content.Assignment.Select((v, i) => new { Index = i, Value = v })
+      var equipments = new HashSet<int>(Content.Solution.Assignment.Select((v, i) => new { Index = i, Value = v })
         .Where(x => x.Value == selectedNode.Location).Select(x => x.Index));
       var rowSums = new Dictionary<int, double>(equipments.Count);
@@ -279,5 +298,5 @@
 
     private void recalculateButton_Click(object sender, EventArgs e) {
-      Content.Evaluation = Content.ProblemInstance.Evaluate(Content.Assignment);
+      Content.Solution.Evaluation = Content.ProblemInstance.Evaluate(Content.Solution.Assignment);
     }
   }
Index: branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.csproj
===================================================================
--- branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.csproj	(revision 15688)
+++ branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.csproj	(revision 16728)
@@ -1,4 +1,4 @@
 ﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -11,5 +11,5 @@
     <RootNamespace>HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views</RootNamespace>
     <AssemblyName>HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <TargetFrameworkProfile />
@@ -135,9 +135,4 @@
       <Private>False</Private>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
-      <Project>{14ab8d24-25bc-400c-a846-4627aa945192}</Project>
-      <Name>HeuristicLab.Optimization-3.3</Name>
-      <Private>False</Private>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.GeneralizedQuadraticAssignment\3.3\HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj">
       <Project>{C739E6D2-5680-4804-A810-8017DA0C238F}</Project>
Index: branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/Plugin.cs.frame
===================================================================
--- branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/Plugin.cs.frame	(revision 15688)
+++ branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/Plugin.cs.frame	(revision 16728)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views {
-  [Plugin("HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views", "3.3.13.$WCREV$")]
+  [Plugin("HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views", "3.3.15.$WCREV$")]
   [PluginFile("HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
Index: branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 15688)
+++ branches/1614_GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/Properties/AssemblyInfo.cs.frame	(revision 16728)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -31,5 +31,5 @@
 [assembly: AssemblyCompany("HEAL")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2017 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2018 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
@@ -54,3 +54,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.14.$WCREV$")]
+[assembly: AssemblyFileVersion("3.3.15.$WCREV$")]
