Index: branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/HeuristicLab.Problems.DynamicalSystemsModelling-3.3.csproj
===================================================================
--- branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/HeuristicLab.Problems.DynamicalSystemsModelling-3.3.csproj	(revision 16248)
+++ branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/HeuristicLab.Problems.DynamicalSystemsModelling-3.3.csproj	(revision 16249)
@@ -115,4 +115,5 @@
     <Compile Include="Problem.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Vector.cs" />
   </ItemGroup>
   <ItemGroup>
Index: branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Problem.cs
===================================================================
--- branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Problem.cs	(revision 16248)
+++ branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Problem.cs	(revision 16249)
@@ -40,86 +40,5 @@
 namespace HeuristicLab.Problems.DynamicalSystemsModelling {
 
-  public class Vector {
-    public readonly static Vector Zero = new Vector(new double[0]);
-
-    public static Vector operator +(Vector a, Vector b) {
-      if (a == Zero) return b;
-      if (b == Zero) return a;
-      Debug.Assert(a.arr.Length == b.arr.Length);
-      var res = new double[a.arr.Length];
-      for (int i = 0; i < res.Length; i++)
-        res[i] = a.arr[i] + b.arr[i];
-      return new Vector(res);
-    }
-    public static Vector operator -(Vector a, Vector b) {
-      if (b == Zero) return a;
-      if (a == Zero) return -b;
-      Debug.Assert(a.arr.Length == b.arr.Length);
-      var res = new double[a.arr.Length];
-      for (int i = 0; i < res.Length; i++)
-        res[i] = a.arr[i] - b.arr[i];
-      return new Vector(res);
-    }
-    public static Vector operator -(Vector v) {
-      if (v == Zero) return Zero;
-      for (int i = 0; i < v.arr.Length; i++)
-        v.arr[i] = -v.arr[i];
-      return v;
-    }
-
-    public static Vector operator *(double s, Vector v) {
-      if (v == Zero) return Zero;
-      if (s == 0.0) return Zero;
-      var res = new double[v.arr.Length];
-      for (int i = 0; i < res.Length; i++)
-        res[i] = s * v.arr[i];
-      return new Vector(res);
-    }
-
-    public static Vector operator *(Vector v, double s) {
-      return s * v;
-    }
-    public static Vector operator *(Vector u, Vector v) {
-      if (v == Zero) return Zero;
-      if (u == Zero) return Zero;
-      var res = new double[v.arr.Length];
-      for (int i = 0; i < res.Length; i++)
-        res[i] = u.arr[i] * v.arr[i];
-      return new Vector(res);
-    }
-    public static Vector operator /(double s, Vector v) {
-      if (s == 0.0) return Zero;
-      if (v == Zero) throw new ArgumentException("Division by zero vector");
-      var res = new double[v.arr.Length];
-      for (int i = 0; i < res.Length; i++)
-        res[i] = 1.0 / v.arr[i];
-      return new Vector(res);
-    }
-    public static Vector operator /(Vector v, double s) {
-      return v * 1.0 / s;
-    }
-
-    public static Vector Sin(Vector s) {
-      var res = new double[s.arr.Length];
-      for (int i = 0; i < res.Length; i++) res[i] = Math.Sin(s.arr[i]);
-      return new Vector(res);
-    }
-    public static Vector Cos(Vector s) {
-      var res = new double[s.arr.Length];
-      for (int i = 0; i < res.Length; i++) res[i] = Math.Cos(s.arr[i]);
-      return new Vector(res);
-    }
-
-    private readonly double[] arr; // backing array;
-
-    public Vector(double[] v) {
-      this.arr = v;
-    }
-
-    public void CopyTo(double[] target) {
-      Debug.Assert(arr.Length <= target.Length);
-      Array.Copy(arr, target, arr.Length);
-    }
-  }
+  
 
 
Index: branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Vector.cs
===================================================================
--- branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Vector.cs	(revision 16249)
+++ branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/Vector.cs	(revision 16249)
@@ -0,0 +1,91 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HeuristicLab.Problems.DynamicalSystemsModelling {
+  public class Vector {
+    public readonly static Vector Zero = new Vector(new double[0]);
+
+    public static Vector operator +(Vector a, Vector b) {
+      if (a == Zero) return b;
+      if (b == Zero) return a;
+      Debug.Assert(a.arr.Length == b.arr.Length);
+      var res = new double[a.arr.Length];
+      for (int i = 0; i < res.Length; i++)
+        res[i] = a.arr[i] + b.arr[i];
+      return new Vector(res);
+    }
+    public static Vector operator -(Vector a, Vector b) {
+      if (b == Zero) return a;
+      if (a == Zero) return -b;
+      Debug.Assert(a.arr.Length == b.arr.Length);
+      var res = new double[a.arr.Length];
+      for (int i = 0; i < res.Length; i++)
+        res[i] = a.arr[i] - b.arr[i];
+      return new Vector(res);
+    }
+    public static Vector operator -(Vector v) {
+      if (v == Zero) return Zero;
+      for (int i = 0; i < v.arr.Length; i++)
+        v.arr[i] = -v.arr[i];
+      return v;
+    }
+
+    public static Vector operator *(double s, Vector v) {
+      if (v == Zero) return Zero;
+      if (s == 0.0) return Zero;
+      var res = new double[v.arr.Length];
+      for (int i = 0; i < res.Length; i++)
+        res[i] = s * v.arr[i];
+      return new Vector(res);
+    }
+
+    public static Vector operator *(Vector v, double s) {
+      return s * v;
+    }
+    public static Vector operator *(Vector u, Vector v) {
+      if (v == Zero) return Zero;
+      if (u == Zero) return Zero;
+      var res = new double[v.arr.Length];
+      for (int i = 0; i < res.Length; i++)
+        res[i] = u.arr[i] * v.arr[i];
+      return new Vector(res);
+    }
+    public static Vector operator /(double s, Vector v) {
+      if (s == 0.0) return Zero;
+      if (v == Zero) throw new ArgumentException("Division by zero vector");
+      var res = new double[v.arr.Length];
+      for (int i = 0; i < res.Length; i++)
+        res[i] = 1.0 / v.arr[i];
+      return new Vector(res);
+    }
+    public static Vector operator /(Vector v, double s) {
+      return v * 1.0 / s;
+    }
+
+    public static Vector Sin(Vector s) {
+      var res = new double[s.arr.Length];
+      for (int i = 0; i < res.Length; i++) res[i] = Math.Sin(s.arr[i]);
+      return new Vector(res);
+    }
+    public static Vector Cos(Vector s) {
+      var res = new double[s.arr.Length];
+      for (int i = 0; i < res.Length; i++) res[i] = Math.Cos(s.arr[i]);
+      return new Vector(res);
+    }
+
+    private readonly double[] arr; // backing array;
+
+    public Vector(double[] v) {
+      this.arr = v;
+    }
+
+    public void CopyTo(double[] target) {
+      Debug.Assert(arr.Length <= target.Length);
+      Array.Copy(arr, target, arr.Length);
+    }
+  }
+}
