Index: trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizard.cs
===================================================================
--- trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizard.cs	(revision 4182)
+++ trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizard.cs	(revision 4187)
@@ -59,4 +59,7 @@
         if (!form.IsMultiObjective)
           replacementsDictionary["$problemType$"] = problemType.Replace("Multi", "Single");
+        replacementsDictionary.Add("$parameterProperties$", form.ParameterProperties);
+        replacementsDictionary.Add("$properties$", form.Properties);
+        replacementsDictionary.Add("$parameterInitializers$", form.ParameterInitializers);
         shouldAddItem = true;
       } else shouldAddItem = false;
Index: trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizardForm.Designer.cs
===================================================================
--- trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizardForm.Designer.cs	(revision 4182)
+++ trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizardForm.Designer.cs	(revision 4187)
@@ -33,16 +33,16 @@
       this.finishButton = new System.Windows.Forms.Button();
       this.panel1 = new System.Windows.Forms.Panel();
+      this.label4 = new System.Windows.Forms.Label();
+      this.pictureBox1 = new System.Windows.Forms.PictureBox();
       this.page2Panel = new System.Windows.Forms.Panel();
       this.label3 = new System.Windows.Forms.Label();
-      this.label4 = new System.Windows.Forms.Label();
-      this.pictureBox1 = new System.Windows.Forms.PictureBox();
+      this.parametersControl = new HeuristicLab.VS2010Wizards.ParametersControl();
       this.panel2 = new System.Windows.Forms.Panel();
       this.nextButton = new System.Windows.Forms.Button();
       this.previousButton = new System.Windows.Forms.Button();
       this.page1Panel = new System.Windows.Forms.Panel();
-      this.parametersControl1 = new HeuristicLab.VS2010Wizards.ParametersControl();
       this.panel1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
       this.page2Panel.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
       this.page1Panel.SuspendLayout();
       this.SuspendLayout();
@@ -76,5 +76,4 @@
       this.algorithmDescriptionTextBox.Size = new System.Drawing.Size(469, 63);
       this.algorithmDescriptionTextBox.TabIndex = 3;
-      this.algorithmDescriptionTextBox.TextChanged += new System.EventHandler(this.algorithmDescriptionTextBox_TextChanged);
       // 
       // isMultiObjectiveCheckBox
@@ -88,5 +87,4 @@
       this.isMultiObjectiveCheckBox.Text = "Multi-Objective";
       this.isMultiObjectiveCheckBox.UseVisualStyleBackColor = true;
-      this.isMultiObjectiveCheckBox.CheckedChanged += new System.EventHandler(this.isMultiObjectiveCheckBox_CheckedChanged);
       // 
       // algorithmNameTextBox
@@ -98,5 +96,4 @@
       this.algorithmNameTextBox.TabIndex = 1;
       this.algorithmNameTextBox.Text = "MyAlgorithm";
-      this.algorithmNameTextBox.TextChanged += new System.EventHandler(this.algorithmNameTextBox_TextChanged);
       // 
       // cancelButton
@@ -134,26 +131,4 @@
       this.panel1.TabIndex = 8;
       // 
-      // page2Panel
-      // 
-      this.page2Panel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.page2Panel.Controls.Add(this.label3);
-      this.page2Panel.Controls.Add(this.parametersControl1);
-      this.page2Panel.Location = new System.Drawing.Point(0, 86);
-      this.page2Panel.Name = "page2Panel";
-      this.page2Panel.Size = new System.Drawing.Size(676, 289);
-      this.page2Panel.TabIndex = 10;
-      this.page2Panel.Visible = false;
-      // 
-      // label3
-      // 
-      this.label3.AutoSize = true;
-      this.label3.Location = new System.Drawing.Point(13, 10);
-      this.label3.Name = "label3";
-      this.label3.Size = new System.Drawing.Size(63, 13);
-      this.label3.TabIndex = 1;
-      this.label3.Text = "Parameters:";
-      // 
       // label4
       // 
@@ -174,4 +149,36 @@
       this.pictureBox1.TabIndex = 0;
       this.pictureBox1.TabStop = false;
+      // 
+      // page2Panel
+      // 
+      this.page2Panel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.page2Panel.Controls.Add(this.label3);
+      this.page2Panel.Controls.Add(this.parametersControl);
+      this.page2Panel.Location = new System.Drawing.Point(0, 86);
+      this.page2Panel.Name = "page2Panel";
+      this.page2Panel.Size = new System.Drawing.Size(676, 289);
+      this.page2Panel.TabIndex = 10;
+      this.page2Panel.Visible = false;
+      // 
+      // label3
+      // 
+      this.label3.AutoSize = true;
+      this.label3.Location = new System.Drawing.Point(13, 10);
+      this.label3.Name = "label3";
+      this.label3.Size = new System.Drawing.Size(63, 13);
+      this.label3.TabIndex = 1;
+      this.label3.Text = "Parameters:";
+      // 
+      // parametersControl
+      // 
+      this.parametersControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.parametersControl.Location = new System.Drawing.Point(0, 33);
+      this.parametersControl.Name = "parametersControl";
+      this.parametersControl.Size = new System.Drawing.Size(676, 256);
+      this.parametersControl.TabIndex = 0;
       // 
       // panel2
@@ -224,14 +231,4 @@
       this.page1Panel.TabIndex = 9;
       // 
-      // parametersControl1
-      // 
-      this.parametersControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.parametersControl1.Location = new System.Drawing.Point(0, 33);
-      this.parametersControl1.Name = "parametersControl1";
-      this.parametersControl1.Size = new System.Drawing.Size(676, 256);
-      this.parametersControl1.TabIndex = 0;
-      // 
       // AlgorithmWizardForm
       // 
@@ -245,6 +242,6 @@
       this.Controls.Add(this.finishButton);
       this.Controls.Add(this.panel2);
+      this.Controls.Add(this.page2Panel);
       this.Controls.Add(this.page1Panel);
-      this.Controls.Add(this.page2Panel);
       this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
       this.Name = "AlgorithmWizardForm";
@@ -252,7 +249,7 @@
       this.panel1.ResumeLayout(false);
       this.panel1.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
       this.page2Panel.ResumeLayout(false);
       this.page2Panel.PerformLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
       this.page1Panel.ResumeLayout(false);
       this.page1Panel.PerformLayout();
@@ -278,5 +275,5 @@
     private System.Windows.Forms.Panel page1Panel;
     private System.Windows.Forms.Panel page2Panel;
-    private ParametersControl parametersControl1;
+    private ParametersControl parametersControl;
     private System.Windows.Forms.Label label3;
   }
Index: trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizardForm.cs
===================================================================
--- trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizardForm.cs	(revision 4182)
+++ trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizardForm.cs	(revision 4187)
@@ -22,4 +22,16 @@
       private set;
     }
+    public string ParameterProperties {
+      get;
+      private set;
+    }
+    public string Properties {
+      get;
+      private set;
+    }
+    public string ParameterInitializers {
+      get;
+      private set;
+    }
 
     public AlgorithmWizardForm() {
@@ -31,4 +43,5 @@
 
     private void finishButton_Click(object sender, System.EventArgs e) {
+      SetProperties();
       DialogResult = System.Windows.Forms.DialogResult.OK;
       Close();
@@ -40,14 +53,11 @@
     }
 
-    private void algorithmNameTextBox_TextChanged(object sender, EventArgs e) {
+    private void SetProperties() {
       AlgorithmName = algorithmNameTextBox.Text;
-    }
-
-    private void algorithmDescriptionTextBox_TextChanged(object sender, EventArgs e) {
       AlgorithmDescription = algorithmDescriptionTextBox.Text;
-    }
-
-    private void isMultiObjectiveCheckBox_CheckedChanged(object sender, EventArgs e) {
       IsMultiObjective = isMultiObjectiveCheckBox.Checked;
+      ParameterProperties = parametersControl.GetParameterProperties("private");
+      Properties = parametersControl.GetProperties("public");
+      ParameterInitializers = parametersControl.GetInitializers();
     }
 
Index: trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizardForm.resx
===================================================================
--- trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizardForm.resx	(revision 4182)
+++ trunk/tools/Templates/HeuristicLab.VS2010Wizards/AlgorithmWizardForm.resx	(revision 4187)
@@ -113,10 +113,10 @@
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
Index: trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.Designer.cs
===================================================================
--- trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.Designer.cs	(revision 4182)
+++ trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.Designer.cs	(revision 4187)
@@ -73,4 +73,6 @@
       this.removeButton = new System.Windows.Forms.Button();
       this.addButton = new System.Windows.Forms.Button();
+      this.parameterTypeComboBox = new System.Windows.Forms.ComboBox();
+      this.customInputTextBox = new System.Windows.Forms.TextBox();
       this.SuspendLayout();
       // 
@@ -170,6 +172,36 @@
       this.addButton.Click += new System.EventHandler(this.addButton_Click);
       // 
+      // parameterTypeComboBox
+      // 
+      this.parameterTypeComboBox.FormattingEnabled = true;
+      this.parameterTypeComboBox.Items.AddRange(new object[] {
+            "",
+            "Value",
+            "Lookup",
+            "ValueLookup",
+            "ScopeTreeLookup"});
+      this.parameterTypeComboBox.Location = new System.Drawing.Point(3, 232);
+      this.parameterTypeComboBox.Name = "parameterTypeComboBox";
+      this.parameterTypeComboBox.Size = new System.Drawing.Size(26, 21);
+      this.parameterTypeComboBox.TabIndex = 5;
+      this.parameterTypeComboBox.Visible = false;
+      this.parameterTypeComboBox.SelectedIndexChanged += new System.EventHandler(this.parameterTypeComboBox_SelectedIndexChanged);
+      this.parameterTypeComboBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.parameterTypeComboBox_KeyUp);
+      this.parameterTypeComboBox.Leave += new System.EventHandler(this.parameterTypeComboBox_Leave);
+      // 
+      // customInputTextBox
+      // 
+      this.customInputTextBox.Location = new System.Drawing.Point(3, 206);
+      this.customInputTextBox.Name = "customInputTextBox";
+      this.customInputTextBox.Size = new System.Drawing.Size(26, 20);
+      this.customInputTextBox.TabIndex = 6;
+      this.customInputTextBox.Visible = false;
+      this.customInputTextBox.KeyUp += new System.Windows.Forms.KeyEventHandler(this.customInputTextBox_KeyUp);
+      this.customInputTextBox.Leave += new System.EventHandler(this.customInputTextBox_Leave);
+      // 
       // ParametersControl
       // 
+      this.Controls.Add(this.customInputTextBox);
+      this.Controls.Add(this.parameterTypeComboBox);
       this.Controls.Add(this.downButton);
       this.Controls.Add(this.upButton);
@@ -180,4 +212,5 @@
       this.Size = new System.Drawing.Size(740, 256);
       this.ResumeLayout(false);
+      this.PerformLayout();
 
     }
@@ -195,4 +228,6 @@
     private System.Windows.Forms.ColumnHeader descriptionColumnHeader;
     private System.Windows.Forms.ColumnHeader typeColumnHeader;
+    private System.Windows.Forms.ComboBox parameterTypeComboBox;
+    private System.Windows.Forms.TextBox customInputTextBox;
   }
 }
Index: trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.cs
===================================================================
--- trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.cs	(revision 4182)
+++ trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.cs	(revision 4187)
@@ -36,59 +36,62 @@
 
     public string GetParameterProperties(string accessModifier) {
-      return string.Empty;
+      StringBuilder builder = new StringBuilder();
+      foreach (ListViewItem item in parametersListView.Items) {
+        string name = item.Text.Trim();
+        string type = item.SubItems[typeColumnHeader.DisplayIndex].Text.Trim();
+        string dataType = item.SubItems[dataTypeColumnHeader.DisplayIndex].Text.Trim();
+        builder.Append(accessModifier);
+        builder.Append(" " + type + "Parameter");
+        if (dataType != string.Empty)
+          builder.Append("<" + dataType + ">");
+        builder.Append(" " + name + "Parameter {" + Environment.NewLine);
+        builder.Append("\tget { return ");
+        builder.Append("(" + type + "Parameter");
+        if (dataType != string.Empty)
+          builder.Append("<" + dataType + ">");
+        builder.Append(")Parameters[\"" + name + "\"]; }" + Environment.NewLine);
+        builder.Append("}" + Environment.NewLine);
+      }
+      return builder.ToString();
     }
 
     public string GetProperties(string accessModifier) {
-      return string.Empty;
+      StringBuilder builder = new StringBuilder();
+      foreach (ListViewItem item in parametersListView.Items) {
+        string name = item.Text.Trim();
+        string type = item.SubItems[typeColumnHeader.DisplayIndex].Text.Trim();
+        string dataType = item.SubItems[dataTypeColumnHeader.DisplayIndex].Text.Trim();
+        if (type.ToLower().Equals("value")) {
+          builder.Append(accessModifier + " " + dataType);
+          builder.Append(" " + name + " {" + Environment.NewLine);
+          builder.Append("\tget { return " + name + "Parameter.Value; }" + Environment.NewLine);
+          builder.Append("\tset { " + name + "Parameter.Value = value; }" + Environment.NewLine);
+          builder.Append("}" + Environment.NewLine);
+        }
+      }
+      return builder.ToString();
     }
 
     public string GetInitializers() {
-      return string.Empty;
-    }
-
-    private void parametersListView_MouseDoubleClick(object sender, MouseEventArgs e) {
-      var hit = parametersListView.HitTest(e.Location);
-      TextBox dynamicUserInput = new TextBox();
-      dynamicUserInput.Left = parametersListView.Left + hit.SubItem.Bounds.Left + 3;
-      dynamicUserInput.Top = parametersListView.Top + hit.SubItem.Bounds.Top;
-      dynamicUserInput.Width = hit.SubItem.Bounds.Width;
-      dynamicUserInput.Height = hit.SubItem.Bounds.Height;
-      dynamicUserInput.Text = hit.SubItem.Text;
-      dynamicUserInput.Tag = hit.SubItem;
-      Controls.Add(dynamicUserInput);
-      dynamicUserInput.BringToFront();
-      Refresh();
-      dynamicUserInput.Focus();
-      dynamicUserInput.SelectAll();
-      dynamicUserInput.KeyUp += new KeyEventHandler(dynamicUserInput_KeyUp);
-      dynamicUserInput.LostFocus += new EventHandler(dynamicUserInput_LostFocus);
-    }
-
-    private void dynamicUserInput_LostFocus(object sender, EventArgs e) {
-      TextBox t = (TextBox)sender;
-      System.Windows.Forms.ListViewItem.ListViewSubItem subItem = t.Tag as System.Windows.Forms.ListViewItem.ListViewSubItem;
-      subItem.Text = t.Text;
-      t.KeyUp -= new KeyEventHandler(dynamicUserInput_KeyUp);
-      t.LostFocus -= new EventHandler(dynamicUserInput_LostFocus);
-      Controls.Remove(t);
-    }
-
-    private void dynamicUserInput_KeyUp(object sender, KeyEventArgs e) {
-      if (e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter)
-        dynamicUserInput_LostFocus(sender, EventArgs.Empty);
-    }
-
-    private void parametersListView_SelectedIndexChanged(object sender, EventArgs e) {
-      if (parametersListView.SelectedIndices.Count > 0) {
-        removeButton.Enabled = true;
-        upButton.Enabled = true;
-        downButton.Enabled = true;
-      } else {
-        removeButton.Enabled = false;
-        upButton.Enabled = false;
-        downButton.Enabled = false;
-      }
-    }
-
+      StringBuilder builder = new StringBuilder();
+      foreach (ListViewItem item in parametersListView.Items) {
+        string name = item.Text.Trim();
+        string type = item.SubItems[typeColumnHeader.DisplayIndex].Text.Trim();
+        string dataType = item.SubItems[dataTypeColumnHeader.DisplayIndex].Text.Trim();
+        string description = item.SubItems[descriptionColumnHeader.DisplayIndex].Text.Trim();
+        string initialValue = item.SubItems[defaultValueColumnHeader.DisplayIndex].Text.Trim();
+        builder.Append("\tParameters.Add(new " + type + "Parameter");
+        if (dataType != string.Empty)
+          builder.Append("<" + dataType + ">");
+        builder.Append("(\"" + name + "\", ");
+        builder.Append("\"" + description + "\"");
+        if (initialValue != string.Empty)
+          builder.Append(", " + initialValue);
+        builder.Append("));" + Environment.NewLine);
+      }
+      return builder.ToString();
+    }
+
+    #region Button Event Handlers
     private void removeButton_Click(object sender, EventArgs e) {
       if (parametersListView.SelectedIndices.Count > 0) {
@@ -142,6 +145,79 @@
       item.SubItems.Add("IItem");
       item.SubItems.Add("Add a description.");
-      item.SubItems.Add("");
+      item.SubItems.Add("null");
       parametersListView.Items.Add(item);
+    }
+    #endregion
+
+    private void parametersListView_MouseDoubleClick(object sender, MouseEventArgs e) {
+      var hit = parametersListView.HitTest(e.Location);
+      if (hit.Item.SubItems[typeColumnHeader.DisplayIndex] == hit.SubItem) {
+        parameterTypeComboBox.Left = parametersListView.Left + hit.SubItem.Bounds.Left + 3;
+        parameterTypeComboBox.Top = parametersListView.Top + hit.SubItem.Bounds.Top;
+        parameterTypeComboBox.Width = hit.SubItem.Bounds.Width;
+        parameterTypeComboBox.Height = hit.SubItem.Bounds.Height;
+        parameterTypeComboBox.Text = hit.SubItem.Text;
+        parameterTypeComboBox.Tag = hit.SubItem;
+        parameterTypeComboBox.Visible = true;
+        parameterTypeComboBox.BringToFront();
+        Refresh();
+        parameterTypeComboBox.Focus();
+        parameterTypeComboBox.SelectAll();
+      } else {
+        customInputTextBox.Left = parametersListView.Left + hit.SubItem.Bounds.Left + 3;
+        customInputTextBox.Top = parametersListView.Top + hit.SubItem.Bounds.Top;
+        if (hit.SubItem != hit.Item.SubItems[0])
+          customInputTextBox.Width = hit.SubItem.Bounds.Width;
+        else customInputTextBox.Width = hit.Item.SubItems[1].Bounds.Left;
+        customInputTextBox.Height = hit.SubItem.Bounds.Height;
+        customInputTextBox.Text = hit.SubItem.Text;
+        customInputTextBox.Tag = hit.SubItem;
+        customInputTextBox.Visible = true;
+        customInputTextBox.BringToFront();
+        Refresh();
+        customInputTextBox.Focus();
+        customInputTextBox.SelectAll();
+      }
+    }
+
+    private void parametersListView_SelectedIndexChanged(object sender, EventArgs e) {
+      if (parametersListView.SelectedIndices.Count > 0) {
+        removeButton.Enabled = true;
+        upButton.Enabled = true;
+        downButton.Enabled = true;
+      } else {
+        removeButton.Enabled = false;
+        upButton.Enabled = false;
+        downButton.Enabled = false;
+      }
+    }
+
+    private void customInputTextBox_Leave(object sender, EventArgs e) {
+      TextBox t = (TextBox)sender;
+      System.Windows.Forms.ListViewItem.ListViewSubItem subItem = t.Tag as System.Windows.Forms.ListViewItem.ListViewSubItem;
+      subItem.Text = t.Text;
+      t.Visible = false;
+    }
+
+    private void customInputTextBox_KeyUp(object sender, KeyEventArgs e) {
+      if (e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter)
+        customInputTextBox_Leave(sender, EventArgs.Empty);
+    }
+
+    private void parameterTypeComboBox_Leave(object sender, EventArgs e) {
+      ComboBox c = (ComboBox)sender;
+      System.Windows.Forms.ListViewItem.ListViewSubItem subItem = c.Tag as System.Windows.Forms.ListViewItem.ListViewSubItem;
+      subItem.Text = c.Text;
+      c.Visible = false;
+    }
+
+    private void parameterTypeComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      if (parameterTypeComboBox.Visible)
+        parameterTypeComboBox_Leave(sender, e);
+    }
+
+    private void parameterTypeComboBox_KeyUp(object sender, KeyEventArgs e) {
+      if (e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter)
+        parameterTypeComboBox_Leave(sender, EventArgs.Empty);
     }
   }
Index: trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.resx
===================================================================
--- trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.resx	(revision 4182)
+++ trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.resx	(revision 4187)
@@ -113,8 +113,8 @@
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
 </root>
Index: trunk/tools/Templates/HeuristicLabAlgorithmTemplate/DefaultAlgorithm.cs
===================================================================
--- trunk/tools/Templates/HeuristicLabAlgorithmTemplate/DefaultAlgorithm.cs	(revision 4182)
+++ trunk/tools/Templates/HeuristicLabAlgorithmTemplate/DefaultAlgorithm.cs	(revision 4187)
@@ -46,27 +46,11 @@
 
     #region Parameter Properties
-    private ValueParameter<IntValue> SeedParameter {
-      get { return (ValueParameter<IntValue>)Parameters["Seed"]; }
-    }
-    private ValueParameter<BoolValue> SetSeedRandomlyParameter {
-      get { return (ValueParameter<BoolValue>)Parameters["SetSeedRandomly"]; }
-    }
-    private ValueParameter<MultiAnalyzer> AnalyzerParameter {
-      get { return (ValueParameter<MultiAnalyzer>)Parameters["Analyzer"]; }
-    }
+    $parameterProperties$
     #endregion
 
     #region Properties
-    public IntValue Seed {
-      get { return SeedParameter.Value; }
-      set { SeedParameter.Value = value; }
-    }
-    public BoolValue SetSeedRandomly {
-      get { return SetSeedRandomlyParameter.Value; }
-      set { SetSeedRandomlyParameter.Value = value; }
-    }
-    public MultiAnalyzer Analyzer {
-      get { return AnalyzerParameter.Value; }
-      set { AnalyzerParameter.Value = value; }
+    $properties$
+    private RandomCreator RandomCreator {
+      get { return (RandomCreator)OperatorGraph.InitialOperator; }
     }
     #endregion
@@ -76,12 +60,19 @@
     public $safeitemname$()
       : base() {
-      Parameters.Add(new ValueParameter<IntValue>("Seed", "The random seed used to initialize the new pseudo random number generator.", new IntValue(0)));
-      Parameters.Add(new ValueParameter<BoolValue>("SetSeedRandomly", "True if the random seed should be set to a random value, otherwise false.", new BoolValue(true)));
-      Parameters.Add(new ValueParameter<MultiAnalyzer>("Analyzer", "The operator used to analyze each iteration.", new MultiAnalyzer()));
+      $parameterInitializers$
       
-      // TODO: Create and assign OperatorGraph.InitialOperator
+      RandomCreator randomCreator = new RandomCreator();
+      OperatorGraph.InitialOperator = randomCreator;
 
-      // TODO: Build operator graph
+      randomCreator.RandomParameter.ActualName = "Random";
+      randomCreator.SeedParameter.ActualName = SeedParameter.Name;
+      randomCreator.SeedParameter.Value = null;
+      randomCreator.SetSeedRandomlyParameter.ActualName = SetSeedRandomlyParameter.Name;
+      randomCreator.SetSeedRandomlyParameter.Value = null;
+      randomCreator.Successor = null; // TODO: 
+
+      // TODO: Create further operators and build operator graph
       
+      UpdateAnalyzers();
       AttachEventHandlers();
     }
@@ -101,4 +92,5 @@
     protected override void OnProblemChanged() {
       // TODO: Initialize and parameterize operators
+      UpdateAnalyzers();
       base.OnProblemChanged();
     }
@@ -114,4 +106,5 @@
     protected override void Problem_OperatorsChanged(object sender, EventArgs e) {
       // TODO: Parameterize operators
+      UpdateAnalyzers();
       base.Problem_OperatorsChanged(sender, e);
     }
