Index: /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/HeuristicLab.Problems.VehicleRouting.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/HeuristicLab.Problems.VehicleRouting.Views-3.3.csproj	(revision 4846)
+++ /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/HeuristicLab.Problems.VehicleRouting.Views-3.3.csproj	(revision 4847)
@@ -112,4 +112,10 @@
   <ItemGroup>
     <Compile Include="HeuristicLabProblemsVehicleRoutingViewsPlugin.cs" />
+    <Compile Include="VRPImportDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="VRPImportDialog.Designer.cs">
+      <DependentUpon>VRPImportDialog.cs</DependentUpon>
+    </Compile>
     <Compile Include="VRPSolutionView.cs">
       <SubType>UserControl</SubType>
Index: /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VRPImportDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VRPImportDialog.Designer.cs	(revision 4847)
+++ /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VRPImportDialog.Designer.cs	(revision 4847)
@@ -0,0 +1,215 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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
+
+namespace HeuristicLab.Problems.VehicleRouting.Views {
+  partial class VRPImportDialog {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.okButton = new System.Windows.Forms.Button();
+      this.cancelButton = new System.Windows.Forms.Button();
+      this.openVRPFileDialog = new System.Windows.Forms.OpenFileDialog();
+      this.tspFileLabel = new System.Windows.Forms.Label();
+      this.openVRPFileButton = new System.Windows.Forms.Button();
+      this.tspFileTextBox = new System.Windows.Forms.TextBox();
+      this.tourFileLabel = new System.Windows.Forms.Label();
+      this.openTourFileButton = new System.Windows.Forms.Button();
+      this.tourFileTextBox = new System.Windows.Forms.TextBox();
+      this.openTourFileDialog = new System.Windows.Forms.OpenFileDialog();
+      this.clearTourFileButton = new System.Windows.Forms.Button();
+      this.SuspendLayout();
+      // 
+      // okButton
+      // 
+      this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+      this.okButton.Enabled = false;
+      this.okButton.Location = new System.Drawing.Point(422, 69);
+      this.okButton.Name = "okButton";
+      this.okButton.Size = new System.Drawing.Size(75, 23);
+      this.okButton.TabIndex = 9;
+      this.okButton.Text = "&OK";
+      this.okButton.UseVisualStyleBackColor = true;
+      // 
+      // cancelButton
+      // 
+      this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+      this.cancelButton.Location = new System.Drawing.Point(499, 69);
+      this.cancelButton.Name = "cancelButton";
+      this.cancelButton.Size = new System.Drawing.Size(75, 23);
+      this.cancelButton.TabIndex = 10;
+      this.cancelButton.Text = "&Cancel";
+      this.cancelButton.UseVisualStyleBackColor = true;
+      // 
+      // openVRPFileDialog
+      // 
+      this.openVRPFileDialog.DefaultExt = "vrp";
+      this.openVRPFileDialog.FileName = "vrp";
+      this.openVRPFileDialog.Filter = "TSPLib Format|*.vrp|Solomon Format|*.txt|ORLib Format|*.txt";
+      this.openVRPFileDialog.Title = "Open TSP File";
+      // 
+      // tspFileLabel
+      // 
+      this.tspFileLabel.AutoSize = true;
+      this.tspFileLabel.Location = new System.Drawing.Point(12, 15);
+      this.tspFileLabel.Name = "tspFileLabel";
+      this.tspFileLabel.Size = new System.Drawing.Size(51, 13);
+      this.tspFileLabel.TabIndex = 0;
+      this.tspFileLabel.Text = "&VRP File:";
+      // 
+      // openVRPFileButton
+      // 
+      this.openVRPFileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.openVRPFileButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Open;
+      this.openVRPFileButton.Location = new System.Drawing.Point(520, 10);
+      this.openVRPFileButton.Name = "openVRPFileButton";
+      this.openVRPFileButton.Size = new System.Drawing.Size(24, 24);
+      this.openVRPFileButton.TabIndex = 2;
+      this.openVRPFileButton.UseVisualStyleBackColor = true;
+      this.openVRPFileButton.Click += new System.EventHandler(this.openVRPFileButton_Click);
+      // 
+      // tspFileTextBox
+      // 
+      this.tspFileTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.tspFileTextBox.Enabled = false;
+      this.tspFileTextBox.Location = new System.Drawing.Point(136, 12);
+      this.tspFileTextBox.Name = "tspFileTextBox";
+      this.tspFileTextBox.ReadOnly = true;
+      this.tspFileTextBox.Size = new System.Drawing.Size(378, 20);
+      this.tspFileTextBox.TabIndex = 1;
+      // 
+      // tourFileLabel
+      // 
+      this.tourFileLabel.AutoSize = true;
+      this.tourFileLabel.Location = new System.Drawing.Point(12, 41);
+      this.tourFileLabel.Name = "tourFileLabel";
+      this.tourFileLabel.Size = new System.Drawing.Size(119, 13);
+      this.tourFileLabel.TabIndex = 5;
+      this.tourFileLabel.Text = "&Optimal VRP Tours File:";
+      // 
+      // openTourFileButton
+      // 
+      this.openTourFileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.openTourFileButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Open;
+      this.openTourFileButton.Location = new System.Drawing.Point(520, 35);
+      this.openTourFileButton.Name = "openTourFileButton";
+      this.openTourFileButton.Size = new System.Drawing.Size(24, 24);
+      this.openTourFileButton.TabIndex = 7;
+      this.openTourFileButton.UseVisualStyleBackColor = true;
+      this.openTourFileButton.Click += new System.EventHandler(this.openTourFileButton_Click);
+      // 
+      // tourFileTextBox
+      // 
+      this.tourFileTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.tourFileTextBox.Enabled = false;
+      this.tourFileTextBox.Location = new System.Drawing.Point(136, 38);
+      this.tourFileTextBox.Name = "tourFileTextBox";
+      this.tourFileTextBox.ReadOnly = true;
+      this.tourFileTextBox.Size = new System.Drawing.Size(378, 20);
+      this.tourFileTextBox.TabIndex = 6;
+      // 
+      // openTourFileDialog
+      // 
+      this.openTourFileDialog.DefaultExt = "opt";
+      this.openTourFileDialog.FileName = "tour";
+      this.openTourFileDialog.Filter = "Optimal VRP Tour Files|*.opt";
+      this.openTourFileDialog.SupportMultiDottedExtensions = true;
+      this.openTourFileDialog.Title = "Open Optimal TSP Tour File";
+      // 
+      // clearTourFileButton
+      // 
+      this.clearTourFileButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.clearTourFileButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove;
+      this.clearTourFileButton.Location = new System.Drawing.Point(550, 35);
+      this.clearTourFileButton.Name = "clearTourFileButton";
+      this.clearTourFileButton.Size = new System.Drawing.Size(24, 24);
+      this.clearTourFileButton.TabIndex = 8;
+      this.clearTourFileButton.UseVisualStyleBackColor = true;
+      this.clearTourFileButton.Click += new System.EventHandler(this.clearTourFileButton_Click);
+      // 
+      // VRPImportDialog
+      // 
+      this.AcceptButton = this.okButton;
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.CancelButton = this.cancelButton;
+      this.ClientSize = new System.Drawing.Size(586, 104);
+      this.Controls.Add(this.tourFileTextBox);
+      this.Controls.Add(this.tspFileTextBox);
+      this.Controls.Add(this.clearTourFileButton);
+      this.Controls.Add(this.openTourFileButton);
+      this.Controls.Add(this.openVRPFileButton);
+      this.Controls.Add(this.tourFileLabel);
+      this.Controls.Add(this.tspFileLabel);
+      this.Controls.Add(this.cancelButton);
+      this.Controls.Add(this.okButton);
+      this.HelpButton = true;
+      this.MaximizeBox = false;
+      this.MinimizeBox = false;
+      this.Name = "VRPImportDialog";
+      this.ShowIcon = false;
+      this.ShowInTaskbar = false;
+      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+      this.Text = "Import VRP";
+      this.HelpButtonClicked += new System.ComponentModel.CancelEventHandler(this.VRPImportDialog_HelpButtonClicked);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button okButton;
+    private System.Windows.Forms.Button cancelButton;
+    private System.Windows.Forms.OpenFileDialog openVRPFileDialog;
+    private System.Windows.Forms.Label tspFileLabel;
+    private System.Windows.Forms.Button openVRPFileButton;
+    private System.Windows.Forms.TextBox tspFileTextBox;
+    private System.Windows.Forms.Label tourFileLabel;
+    private System.Windows.Forms.Button openTourFileButton;
+    private System.Windows.Forms.TextBox tourFileTextBox;
+    private System.Windows.Forms.OpenFileDialog openTourFileDialog;
+    private System.Windows.Forms.Button clearTourFileButton;
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VRPImportDialog.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VRPImportDialog.cs	(revision 4847)
+++ /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VRPImportDialog.cs	(revision 4847)
@@ -0,0 +1,82 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.ComponentModel;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Problems.VehicleRouting.Views {
+  public enum VRPFormat { Empty, TSPLib, Solomon, ORLib }
+
+  public sealed partial class VRPImportDialog : Form {
+    private string vrpFileName;
+    public string VRPFileName {
+      get { return vrpFileName; }
+    }
+    private string tourFileName;
+    public string TourFileName {
+      get { return tourFileName; }
+    }
+    private VRPFormat format;
+    public VRPFormat Format {
+      get { return format; }
+    }
+
+    public VRPImportDialog() {
+      InitializeComponent();
+      vrpFileName = string.Empty;
+      tourFileName = string.Empty;
+      format = VRPFormat.Empty;
+    }
+
+    private void openVRPFileButton_Click(object sender, EventArgs e) {
+      if (openVRPFileDialog.ShowDialog(this) == DialogResult.OK) {
+        tspFileTextBox.Text = openVRPFileDialog.FileName;
+        tspFileTextBox.Enabled = true;
+        vrpFileName = openVRPFileDialog.FileName;
+        okButton.Enabled = true;
+
+        format = (VRPFormat)(openVRPFileDialog.FilterIndex);
+      }
+    }
+    private void openTourFileButton_Click(object sender, EventArgs e) {
+      if (openTourFileDialog.ShowDialog(this) == DialogResult.OK) {
+        tourFileTextBox.Text = openTourFileDialog.FileName;
+        tourFileTextBox.Enabled = true;
+        tourFileName = openTourFileDialog.FileName;
+      }
+    }
+    private void clearTourFileButton_Click(object sender, EventArgs e) {
+      tourFileTextBox.Text = string.Empty;
+      tourFileTextBox.Enabled = false;
+      tourFileName = string.Empty;
+    }
+
+    private void VRPImportDialog_HelpButtonClicked(object sender, CancelEventArgs e) {
+      if (MessageBox.Show("Do you want to open the HeuristicLab wiki website?", "Help",
+        MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes) {
+          System.Diagnostics.Process.Start("http://dev.heuristiclab.com/trac/hl/core/wiki/Vehicle%20Routing%20Problem");
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VehicleRoutingProblemView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VehicleRoutingProblemView.Designer.cs	(revision 4846)
+++ /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VehicleRoutingProblemView.Designer.cs	(revision 4847)
@@ -29,7 +29,4 @@
       this.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
       this.tabPage2 = new System.Windows.Forms.TabPage();
-      this.importButton2 = new System.Windows.Forms.Button();
-      this.importButton3 = new System.Windows.Forms.Button();
-      this.importBestButton = new System.Windows.Forms.Button();
       this.vrpSolutionView = new HeuristicLab.Problems.VehicleRouting.Views.VRPSolutionView();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
@@ -46,9 +43,11 @@
       // importButton
       // 
+      this.importButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
       this.importButton.Location = new System.Drawing.Point(0, 55);
       this.importButton.Name = "importButton";
-      this.importButton.Size = new System.Drawing.Size(139, 23);
+      this.importButton.Size = new System.Drawing.Size(490, 23);
       this.importButton.TabIndex = 5;
-      this.importButton.Text = "Import from Solomon";
+      this.importButton.Text = "Import";
       this.importButton.UseVisualStyleBackColor = true;
       this.importButton.Click += new System.EventHandler(this.importButton_Click);
@@ -61,8 +60,8 @@
       this.tabControl1.Controls.Add(this.tabPage1);
       this.tabControl1.Controls.Add(this.tabPage2);
-      this.tabControl1.Location = new System.Drawing.Point(0, 111);
+      this.tabControl1.Location = new System.Drawing.Point(0, 84);
       this.tabControl1.Name = "tabControl1";
       this.tabControl1.SelectedIndex = 0;
-      this.tabControl1.Size = new System.Drawing.Size(490, 255);
+      this.tabControl1.Size = new System.Drawing.Size(490, 278);
       this.tabControl1.TabIndex = 6;
       // 
@@ -73,5 +72,5 @@
       this.tabPage1.Name = "tabPage1";
       this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPage1.Size = new System.Drawing.Size(482, 229);
+      this.tabPage1.Size = new System.Drawing.Size(482, 252);
       this.tabPage1.TabIndex = 0;
       this.tabPage1.Text = "Parameters";
@@ -88,5 +87,5 @@
       this.parameterCollectionView.Name = "parameterCollectionView";
       this.parameterCollectionView.ReadOnly = false;
-      this.parameterCollectionView.Size = new System.Drawing.Size(476, 223);
+      this.parameterCollectionView.Size = new System.Drawing.Size(476, 246);
       this.parameterCollectionView.TabIndex = 1;
       // 
@@ -101,34 +100,4 @@
       this.tabPage2.Text = "Visualization";
       this.tabPage2.UseVisualStyleBackColor = true;
-      // 
-      // importButton2
-      // 
-      this.importButton2.Location = new System.Drawing.Point(145, 55);
-      this.importButton2.Name = "importButton2";
-      this.importButton2.Size = new System.Drawing.Size(126, 23);
-      this.importButton2.TabIndex = 7;
-      this.importButton2.Text = "Import from TSPLib";
-      this.importButton2.UseVisualStyleBackColor = true;
-      this.importButton2.Click += new System.EventHandler(this.importButton2_Click);
-      // 
-      // importButton3
-      // 
-      this.importButton3.Location = new System.Drawing.Point(277, 55);
-      this.importButton3.Name = "importButton3";
-      this.importButton3.Size = new System.Drawing.Size(131, 23);
-      this.importButton3.TabIndex = 8;
-      this.importButton3.Text = "Import from ORLib";
-      this.importButton3.UseVisualStyleBackColor = true;
-      this.importButton3.Click += new System.EventHandler(this.importButton3_Click);
-      // 
-      // importBestButton
-      // 
-      this.importBestButton.Location = new System.Drawing.Point(0, 82);
-      this.importBestButton.Name = "importBestButton";
-      this.importBestButton.Size = new System.Drawing.Size(139, 23);
-      this.importBestButton.TabIndex = 9;
-      this.importBestButton.Text = "Import solution";
-      this.importBestButton.UseVisualStyleBackColor = true;
-      this.importBestButton.Click += new System.EventHandler(this.importBestButton_Click);
       // 
       // vrpSolutionView
@@ -146,11 +115,8 @@
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.Controls.Add(this.importBestButton);
-      this.Controls.Add(this.importButton3);
-      this.Controls.Add(this.importButton2);
       this.Controls.Add(this.importButton);
       this.Controls.Add(this.tabControl1);
       this.Name = "VehicleRoutingProblemView";
-      this.Size = new System.Drawing.Size(490, 369);
+      this.Size = new System.Drawing.Size(490, 365);
       this.Controls.SetChildIndex(this.tabControl1, 0);
       this.Controls.SetChildIndex(this.importButton, 0);
@@ -159,7 +125,4 @@
       this.Controls.SetChildIndex(this.descriptionLabel, 0);
       this.Controls.SetChildIndex(this.descriptionTextBox, 0);
-      this.Controls.SetChildIndex(this.importButton2, 0);
-      this.Controls.SetChildIndex(this.importButton3, 0);
-      this.Controls.SetChildIndex(this.importBestButton, 0);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.tabControl1.ResumeLayout(false);
@@ -179,7 +142,4 @@
     private Core.Views.ParameterCollectionView parameterCollectionView;
     private VRPSolutionView vrpSolutionView;
-    private System.Windows.Forms.Button importButton2;
-    private System.Windows.Forms.Button importButton3;
-    private System.Windows.Forms.Button importBestButton;
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VehicleRoutingProblemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VehicleRoutingProblemView.cs	(revision 4846)
+++ /trunk/sources/HeuristicLab.Problems.VehicleRouting.Views/3.3/VehicleRoutingProblemView.cs	(revision 4847)
@@ -27,4 +27,5 @@
 using HeuristicLab.MainForm;
 using HeuristicLab.Parameters;
+using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.VehicleRouting.Views {
@@ -32,4 +33,6 @@
   [Content(typeof(VehicleRoutingProblem), true)]
   public partial class VehicleRoutingProblemView : NamedItemView {
+    private VRPImportDialog vrpImportDialog;
+    
     public new VehicleRoutingProblem Content {
       get { return (VehicleRoutingProblem)base.Content; }
@@ -67,42 +70,34 @@
       parameterCollectionView.Enabled = Content != null;
       vrpSolutionView.Enabled = Content != null;
-      importBestButton.Enabled = importButton.Enabled = importButton2.Enabled = importButton3.Enabled = Content != null && !ReadOnly;
+      importButton.Enabled = Content != null && !ReadOnly;
     }
 
     private void importButton_Click(object sender, EventArgs e) {
-      OpenFileDialog dialog = new OpenFileDialog();
-      dialog.Filter = "Solomon files (*.txt)|*.txt";
+      if (vrpImportDialog == null) vrpImportDialog = new VRPImportDialog();
 
-      if (dialog.ShowDialog() == DialogResult.OK) {
-        Content.ImportFromSolomon(dialog.FileName);
+      if (vrpImportDialog.ShowDialog(this) == DialogResult.OK) {
+        try {
+          switch (vrpImportDialog.Format) {
+            case VRPFormat.TSPLib:
+              Content.ImportFromTSPLib(vrpImportDialog.VRPFileName);
+              break;
+
+            case VRPFormat.Solomon:
+              Content.ImportFromSolomon(vrpImportDialog.VRPFileName);
+              break;
+
+            case VRPFormat.ORLib:
+              Content.ImportFromORLib(vrpImportDialog.VRPFileName);
+              break;
+          }
+
+          if(!string.IsNullOrEmpty(vrpImportDialog.TourFileName))
+            Content.ImportSolution(vrpImportDialog.TourFileName);
+         }
+        catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(this, ex);
+        }
       }
     }
-
-    private void importButton2_Click(object sender, EventArgs e) {
-      OpenFileDialog dialog = new OpenFileDialog();
-      dialog.Filter = "TSPLib files (*.vrp)|*.vrp";
-
-      if (dialog.ShowDialog() == DialogResult.OK) {
-        Content.ImportFromTSPLib(dialog.FileName);
-      }
-    }
-
-    private void importBestButton_Click(object sender, EventArgs e) {
-      OpenFileDialog dialog = new OpenFileDialog();
-      dialog.Filter = "VRP solution files (*.opt)|*.opt";
-
-      if (dialog.ShowDialog() == DialogResult.OK) {
-        Content.ImportSolution(dialog.FileName);
-      }
-    }
-
-    private void importButton3_Click(object sender, EventArgs e) {
-      OpenFileDialog dialog = new OpenFileDialog();
-      dialog.Filter = "ORLib files (*.txt)|*.txt";
-
-      if (dialog.ShowDialog() == DialogResult.OK) {
-        Content.ImportFromORLib(dialog.FileName);
-      }
-    }  
 
     private void CoordinatesParameter_ValueChanged(object sender, EventArgs e) {
Index: /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Evaluators/VRPEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Evaluators/VRPEvaluator.cs	(revision 4846)
+++ /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Evaluators/VRPEvaluator.cs	(revision 4847)
@@ -116,5 +116,5 @@
       DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity,
       DoubleValue fleetUsageFactor, DoubleValue timeFactor, DoubleValue distanceFactor, DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
-      DoubleMatrix coordinates, ILookupParameter<DoubleMatrix> distanceMatrix, BoolValue useDistanceMatrix) {
+      DoubleMatrix coordinates, IParameter distanceMatrix, BoolValue useDistanceMatrix) {
       TourEvaluation eval = new TourEvaluation();
 
@@ -190,5 +190,5 @@
       DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity,
       DoubleValue fleetUsageFactor, DoubleValue timeFactor, DoubleValue distanceFactor, DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
-      DoubleMatrix coordinates, ILookupParameter<DoubleMatrix> distanceMatrix, BoolValue useDistanceMatrix) {
+      DoubleMatrix coordinates, IParameter distanceMatrix, BoolValue useDistanceMatrix) {
       TourEvaluation sumEval = new TourEvaluation();
       sumEval.Distance = 0;
@@ -199,5 +199,5 @@
       sumEval.Tardiness = 0;
 
-      foreach (Tour tour in solution.GetTours(distanceMatrix)) {
+      foreach (Tour tour in solution.GetTours(distanceMatrix as ILookupParameter<DoubleMatrix>)) {
         TourEvaluation eval = EvaluateTour(tour, dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
           fleetUsageFactor, timeFactor, distanceFactor, overloadPenalty, tardinessPenalty,
Index: /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VRPUtilities.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VRPUtilities.cs	(revision 4846)
+++ /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VRPUtilities.cs	(revision 4847)
@@ -57,10 +57,10 @@
 
       if (useDistanceMatrix.Value) {
-        if (distanceMatrix is IValueLookupParameter<DoubleMatrix>) {
-          if ((distanceMatrix as IValueLookupParameter<DoubleMatrix>).Value == null) {
-            (distanceMatrix as IValueLookupParameter<DoubleMatrix>).Value = CreateDistanceMatrix(coordinates);
+        if (distanceMatrix is IValueParameter<DoubleMatrix>) {
+          if ((distanceMatrix as IValueParameter<DoubleMatrix>).Value == null) {
+            (distanceMatrix as IValueParameter<DoubleMatrix>).Value = CreateDistanceMatrix(coordinates);
           }
           
-          distance = (distanceMatrix as IValueLookupParameter<DoubleMatrix>).Value[start, end];
+          distance = (distanceMatrix as IValueParameter<DoubleMatrix>).Value[start, end];
         } else {
           if (distanceMatrix.ActualValue == null) {
Index: /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs	(revision 4846)
+++ /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs	(revision 4847)
@@ -620,4 +620,5 @@
       this.Name = parser.ProblemName;
 
+      BestKnownSolution = null;
       Coordinates = new DoubleMatrix(parser.Coordinates);
       Vehicles.Value = parser.Vehicles;
@@ -636,7 +637,7 @@
 
       this.Name = parser.Name;
-
       int problemSize = parser.Demands.Length;
 
+      BestKnownSolution = null;
       Coordinates = new DoubleMatrix(parser.Vertices);
       if (parser.Vehicles != -1)
@@ -661,8 +662,8 @@
 
       if (parser.Depot != 1)
-        throw new Exception("Invalid depot specification");
+        ErrorHandling.ShowErrorDialog(new Exception("Invalid depot specification"));
 
       if (parser.WeightType != TSPLIBParser.TSPLIBEdgeWeightType.EUC_2D)
-        throw new Exception("Invalid weight type");
+        ErrorHandling.ShowErrorDialog(new Exception("Invalid weight type"));
 
       OnReset();
@@ -672,5 +673,5 @@
       if (BestKnownSolution != null) {
         //call evaluator
-        IValueLookupParameter<DoubleMatrix> distMatrix = new ValueLookupParameter<DoubleMatrix>("DistMatrix",
+        IValueParameter<DoubleMatrix> distMatrix = new ValueParameter<DoubleMatrix>("DistMatrix",
           DistanceMatrix);
 
@@ -716,7 +717,7 @@
 
       if (cities != Coordinates.Rows - 1)
-        throw new Exception("Invalid solution");
-
-      BestKnownSolutionParameter.Value = encoding;
+        ErrorHandling.ShowErrorDialog(new Exception("Invalid solution"));
+      else
+        BestKnownSolutionParameter.Value = encoding;
     }
 
@@ -728,4 +729,5 @@
       int problemSize = parser.Demands.Length;
 
+      BestKnownSolution = null;
       Coordinates = new DoubleMatrix(parser.Vertices);
       Vehicles.Value = problemSize - 1;
