Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/DefaultSymbolicExpressionGrammarView.Designer.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/DefaultSymbolicExpressionGrammarView.Designer.cs	(revision 5512)
+++ 	(revision )
@@ -1,72 +1,0 @@
-﻿#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
-
-namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views {
-  partial class DefaultSymbolicExpressionGrammarView {
-    /// <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 Component 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.checkedItemListView = new HeuristicLab.Core.Views.CheckedItemListView<HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Symbols.Symbol>();
-      this.SuspendLayout();
-      this.checkedItemListView.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.checkedItemListView.Location = new System.Drawing.Point(3, 3);
-      this.checkedItemListView.Name = "itemListView";
-      this.checkedItemListView.Size = new System.Drawing.Size(274, 239);
-      this.checkedItemListView.TabIndex = 0;
-      // 
-      // DefaultSymbolicExpressionGrammarView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.checkedItemListView);
-      this.Name = "DefaultSymbolicExpressionGrammarView";
-      this.Size = new System.Drawing.Size(280, 245);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    protected HeuristicLab.Core.Views.CheckedItemListView<HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Symbols.Symbol> checkedItemListView;
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/DefaultSymbolicExpressionGrammarView.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/DefaultSymbolicExpressionGrammarView.cs	(revision 5512)
+++ 	(revision )
@@ -1,105 +1,0 @@
-﻿#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.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Symbols;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views {
-  [View("Symbolic Expression Grammar View")]
-  [Content(typeof(DefaultSymbolicExpressionGrammar), true)]
-  public partial class DefaultSymbolicExpressionGrammarView : ItemView {
-    private CheckedItemList<Symbol> symbols;
-
-    public new DefaultSymbolicExpressionGrammar Content {
-      get { return (DefaultSymbolicExpressionGrammar)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public DefaultSymbolicExpressionGrammarView() {
-      InitializeComponent();
-      symbols = new CheckedItemList<Symbol>();
-      symbols.CheckedItemsChanged += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<HeuristicLab.Collections.IndexedItem<Symbol>>(symbols_CheckedItemsChanged);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      UpdateControl();
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      checkedItemListView.Enabled = Content != null;
-      checkedItemListView.ReadOnly = ReadOnly;
-    }
-
-    #region content event handlers
-    private void Content_Changed(object sender, EventArgs e) {
-      UpdateControl();
-    }
-    #endregion
-
-    #region helpers
-    private void UpdateControl() {
-      if (Content == null) {
-        ClearSymbols();
-        checkedItemListView.Content = symbols.AsReadOnly();
-      } else {
-        ClearSymbols();
-        foreach (Symbol symbol in Content.Symbols) {
-          if (!(symbol is ReadOnlySymbol)) {
-            symbol.Changed += new EventHandler(symbol_Changed);
-            symbols.Add(symbol, symbol.InitialFrequency > 0.0);
-          }
-        }
-        checkedItemListView.Content = symbols.AsReadOnly();
-      }
-      SetEnabledStateOfControls();
-    }
-
-
-    private void symbol_Changed(object sender, EventArgs e) {
-      Symbol symbol = (Symbol)sender;
-      symbols.SetItemCheckedState(symbol, symbol.InitialFrequency > 0.0);
-    }
-
-    private void symbols_CheckedItemsChanged(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<HeuristicLab.Collections.IndexedItem<Symbol>> e) {
-      ICheckedItemList<Symbol> checkedItemList = (ICheckedItemList<Symbol>)sender;
-      foreach (var indexedItem in e.Items) {
-        if (checkedItemList.ItemChecked(indexedItem.Value)) {
-          indexedItem.Value.InitialFrequency = 1.0;
-        } else {
-          indexedItem.Value.InitialFrequency = 0.0;
-        }
-      }
-    }
-    private void ClearSymbols() {
-      foreach (Symbol s in symbols)
-        s.Changed -= new EventHandler(symbol_Changed);
-      symbols.Clear();
-    }
-    #endregion
-  }
-}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/GraphicalSymbolicExpressionTreeView.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/GraphicalSymbolicExpressionTreeView.cs	(revision 5512)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/GraphicalSymbolicExpressionTreeView.cs	(revision 5513)
@@ -27,8 +27,8 @@
 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views {
   [View("Graphical SymbolicExpressionTree View")]
-  [Content(typeof(SymbolicExpressionTree), true)]
+  [Content(typeof(ISymbolicExpressionTree), true)]
   public partial class GraphicalSymbolicExpressionTreeView : ItemView {
-    public new SymbolicExpressionTree Content {
-      get { return (SymbolicExpressionTree)base.Content; }
+    public new ISymbolicExpressionTree Content {
+      get { return (ISymbolicExpressionTree)base.Content; }
       set { base.Content = value; }
     }
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.csproj
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.csproj	(revision 5512)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.csproj	(revision 5513)
@@ -109,9 +109,9 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="DefaultSymbolicExpressionGrammarView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="DefaultSymbolicExpressionGrammarView.Designer.cs">
-      <DependentUpon>DefaultSymbolicExpressionGrammarView.cs</DependentUpon>
+    <Compile Include="SymbolicExpressionTreeGrammarView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="SymbolicExpressionTreeGrammarView.Designer.cs">
+      <DependentUpon>SymbolicExpressionTreeGrammarView.cs</DependentUpon>
     </Compile>
     <Compile Include="SymbolView.cs">
@@ -161,5 +161,5 @@
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.4\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj">
-      <Project>{125D3006-67F5-48CB-913E-73C0548F17FA}</Project>
+      <Project>{06D4A186-9319-48A0-BADE-A2058D462EEA}</Project>
       <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4</Name>
     </ProjectReference>
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolView.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolView.cs	(revision 5512)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolView.cs	(revision 5513)
@@ -23,5 +23,4 @@
 using System.Windows.Forms;
 using HeuristicLab.Core.Views;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Symbols;
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
@@ -29,8 +28,8 @@
 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views {
   [View("Symbol View")]
-  [Content(typeof(Symbol), false)]
+  [Content(typeof(ISymbol), false)]
   public partial class SymbolView : NamedItemView {
-    public new Symbol Content {
-      get { return (Symbol)base.Content; }
+    public new ISymbol Content {
+      get { return (ISymbol)base.Content; }
       set { base.Content = value; }
     }
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeChart.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeChart.cs	(revision 5512)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeChart.cs	(revision 5513)
@@ -24,4 +24,5 @@
 using System.Drawing;
 using System.Drawing.Imaging;
+using System.Linq;
 using System.Windows.Forms;
 
@@ -30,5 +31,5 @@
     private Image image;
     private StringFormat stringFormat;
-    private Dictionary<SymbolicExpressionTreeNode, VisualSymbolicExpressionTreeNode> visualTreeNodes;
+    private Dictionary<ISymbolicExpressionTreeNode, VisualSymbolicExpressionTreeNode> visualTreeNodes;
 
     public SymbolicExpressionTreeChart() {
@@ -44,5 +45,5 @@
     }
 
-    public SymbolicExpressionTreeChart(SymbolicExpressionTree tree)
+    public SymbolicExpressionTreeChart(ISymbolicExpressionTree tree)
       : this() {
       this.Tree = tree;
@@ -85,10 +86,10 @@
     }
 
-    private SymbolicExpressionTree tree;
-    public SymbolicExpressionTree Tree {
+    private ISymbolicExpressionTree tree;
+    public ISymbolicExpressionTree Tree {
       get { return this.tree; }
       set {
         tree = value;
-        visualTreeNodes = new Dictionary<SymbolicExpressionTreeNode, VisualSymbolicExpressionTreeNode>();
+        visualTreeNodes = new Dictionary<ISymbolicExpressionTreeNode, VisualSymbolicExpressionTreeNode>();
         if (tree != null) {
           foreach (SymbolicExpressionTreeNode node in tree.IterateNodesPrefix())
@@ -129,5 +130,5 @@
     }
 
-    public VisualSymbolicExpressionTreeNode GetVisualSymbolicExpressionTreeNode(SymbolicExpressionTreeNode symbolicExpressionTreeNode) {
+    public VisualSymbolicExpressionTreeNode GetVisualSymbolicExpressionTreeNode(ISymbolicExpressionTreeNode symbolicExpressionTreeNode) {
       if (visualTreeNodes.ContainsKey(symbolicExpressionTreeNode))
         return visualTreeNodes[symbolicExpressionTreeNode];
@@ -207,5 +208,5 @@
 
     #region methods for painting the symbolic expression tree
-    private void DrawFunctionTree(SymbolicExpressionTree tree, Graphics graphics, int x, int y, int width, int height) {
+    private void DrawFunctionTree(ISymbolicExpressionTree tree, Graphics graphics, int x, int y, int width, int height) {
       DrawFunctionTree(tree.Root, graphics, x, y, width, height, Point.Empty);
     }
@@ -220,5 +221,5 @@
     /// <param name="width">width of drawing area</param>
     /// <param name="height">height of drawing area</param>
-    private void DrawFunctionTree(SymbolicExpressionTreeNode node, Graphics graphics, int x, int y, int width, int height, Point connectionPoint) {
+    private void DrawFunctionTree(ISymbolicExpressionTreeNode node, Graphics graphics, int x, int y, int width, int height, Point connectionPoint) {
       VisualSymbolicExpressionTreeNode visualTreeNode = visualTreeNodes[node];
       float center_x = x + width / 2;
@@ -262,5 +263,5 @@
 
       //draw terminal node
-      if (node.SubTrees.Count == 0) {
+      if (node.SubTrees.Count() == 0) {
         graphics.FillRectangle(nodeFillBrush, visualTreeNode.X, visualTreeNode.Y, visualTreeNode.Width, visualTreeNode.Height);
         graphics.DrawRectangle(nodeLinePen, visualTreeNode.X, visualTreeNode.Y, visualTreeNode.Width, visualTreeNode.Height);
@@ -280,9 +281,9 @@
       //calculate areas for the subtrees according to their tree size and call drawFunctionTree
       Point connectFrom = new Point(visualTreeNode.X + visualTreeNode.Width / 2, visualTreeNode.Y + visualTreeNode.Height);
-      int[] xBoundaries = new int[node.SubTrees.Count + 1];
+      int[] xBoundaries = new int[node.SubTrees.Count() + 1];
       xBoundaries[0] = x;
-      for (int i = 0; i < node.SubTrees.Count; i++) {
-        xBoundaries[i + 1] = (int)(xBoundaries[i] + (width * (double)node.SubTrees[i].GetSize()) / (node.GetSize() - 1));
-        DrawFunctionTree(node.SubTrees[i], graphics, xBoundaries[i], y + height,
+      for (int i = 0; i < node.SubTrees.Count(); i++) {
+        xBoundaries[i + 1] = (int)(xBoundaries[i] + (width * (double)node.SubTrees.ElementAt(i).GetSize()) / (node.GetSize() - 1));
+        DrawFunctionTree(node.SubTrees.ElementAt(i), graphics, xBoundaries[i], y + height,
           xBoundaries[i + 1] - xBoundaries[i], height, connectFrom);
       }
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeGrammarView.Designer.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeGrammarView.Designer.cs	(revision 5513)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeGrammarView.Designer.cs	(revision 5513)
@@ -0,0 +1,72 @@
+﻿#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
+
+namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views {
+  partial class SymbolicExpressionTreeGrammarView {
+    /// <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 Component 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.checkedItemListView = new HeuristicLab.Core.Views.CheckedItemListView<ISymbol>();
+      this.SuspendLayout();
+      this.checkedItemListView.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.checkedItemListView.Location = new System.Drawing.Point(3, 3);
+      this.checkedItemListView.Name = "itemListView";
+      this.checkedItemListView.Size = new System.Drawing.Size(274, 239);
+      this.checkedItemListView.TabIndex = 0;
+      // 
+      // DefaultSymbolicExpressionGrammarView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.checkedItemListView);
+      this.Name = "DefaultSymbolicExpressionGrammarView";
+      this.Size = new System.Drawing.Size(280, 245);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    protected HeuristicLab.Core.Views.CheckedItemListView<ISymbol> checkedItemListView;
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeGrammarView.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeGrammarView.cs	(revision 5513)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeGrammarView.cs	(revision 5513)
@@ -0,0 +1,105 @@
+﻿#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.Windows.Forms;
+using HeuristicLab.Collections;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views {
+  [View("Symbolic Expression Grammar View")]
+  [Content(typeof(ISymbolicExpressionTreeGrammar), true)]
+  public partial class SymbolicExpressionTreeGrammarView : ItemView {
+    private CheckedItemList<ISymbol> symbols;
+
+    public new ISymbolicExpressionTreeGrammar Content {
+      get { return (ISymbolicExpressionTreeGrammar)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public SymbolicExpressionTreeGrammarView() {
+      InitializeComponent();
+      symbols = new CheckedItemList<ISymbol>();
+      symbols.CheckedItemsChanged += new CollectionItemsChangedEventHandler<IndexedItem<ISymbol>>(symbols_CheckedItemsChanged);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      UpdateControl();
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      checkedItemListView.Enabled = Content != null;
+      checkedItemListView.ReadOnly = ReadOnly;
+    }
+
+    #region content event handlers
+    private void Content_Changed(object sender, EventArgs e) {
+      UpdateControl();
+    }
+    #endregion
+
+    #region helpers
+    private void UpdateControl() {
+      if (Content == null) {
+        ClearSymbols();
+        checkedItemListView.Content = symbols.AsReadOnly();
+      } else {
+        ClearSymbols();
+        foreach (Symbol symbol in Content.Symbols) {
+          if (!(symbol is ReadOnlySymbol)) {
+            symbol.Changed += new EventHandler(symbol_Changed);
+            symbols.Add(symbol, symbol.InitialFrequency > 0.0);
+          }
+        }
+        checkedItemListView.Content = symbols.AsReadOnly();
+      }
+      SetEnabledStateOfControls();
+    }
+
+
+    private void symbol_Changed(object sender, EventArgs e) {
+      ISymbol symbol = (ISymbol)sender;
+      symbols.SetItemCheckedState(symbol, symbol.InitialFrequency > 0.0);
+    }
+
+    private void symbols_CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<ISymbol>> e) {
+      ICheckedItemList<ISymbol> checkedItemList = (ICheckedItemList<ISymbol>)sender;
+      foreach (var indexedItem in e.Items) {
+        if (checkedItemList.ItemChecked(indexedItem.Value)) {
+          indexedItem.Value.InitialFrequency = 1.0;
+        } else {
+          indexedItem.Value.InitialFrequency = 0.0;
+        }
+      }
+    }
+    private void ClearSymbols() {
+      foreach (Symbol s in symbols)
+        s.Changed -= new EventHandler(symbol_Changed);
+      symbols.Clear();
+    }
+    #endregion
+  }
+}
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionView.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionView.cs	(revision 5512)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionView.cs	(revision 5513)
@@ -20,14 +20,13 @@
 #endregion
 
+using System.Collections.Generic;
 using System.Windows.Forms;
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.PluginInfrastructure;
-using System.Collections.Generic;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Formatters;
 
 namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views {
   [View("SymbolicExpression View")]
-  [Content(typeof(SymbolicExpressionTree), false)]
+  [Content(typeof(ISymbolicExpressionTree), false)]
   public partial class SymbolicExpressionView : AsynchronousContentView {
 
@@ -45,5 +44,5 @@
       int selectedIndex = -1;
       foreach (ISymbolicExpressionTreeStringFormatter formatter in formatters) {
-        if (formatter is SymbolicExpressionTreeStringFormatter)
+        if (formatter is ISymbolicExpressionTreeStringFormatter)
           selectedIndex = treeFormattersList.Count;
         treeFormattersList.Add(formatter);
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/VisualSymbolicExpressionTreeNode.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/VisualSymbolicExpressionTreeNode.cs	(revision 5512)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/VisualSymbolicExpressionTreeNode.cs	(revision 5513)
@@ -30,21 +30,21 @@
     private const int defaultPreferredHeight = 46;
 
-    public VisualSymbolicExpressionTreeNode(SymbolicExpressionTreeNode symbolicExpressionTreeNode) :
+    public VisualSymbolicExpressionTreeNode(ISymbolicExpressionTreeNode symbolicExpressionTreeNode) :
       this(symbolicExpressionTreeNode, defaultLineColor) {
     }
 
-    public VisualSymbolicExpressionTreeNode(SymbolicExpressionTreeNode symbolicExpressionTreeNode, Color lineColor) :
+    public VisualSymbolicExpressionTreeNode(ISymbolicExpressionTreeNode symbolicExpressionTreeNode, Color lineColor) :
       this(symbolicExpressionTreeNode, lineColor, defaultTextColor) {
     }
 
-    public VisualSymbolicExpressionTreeNode(SymbolicExpressionTreeNode symbolicExpressionTreeNode, Color lineColor, Color textColor) :
+    public VisualSymbolicExpressionTreeNode(ISymbolicExpressionTreeNode symbolicExpressionTreeNode, Color lineColor, Color textColor) :
       this(symbolicExpressionTreeNode, lineColor, textColor, defaultFillColor) {
     }
 
-    public VisualSymbolicExpressionTreeNode(SymbolicExpressionTreeNode symbolicExpressionTreeNode, Color lineColor, Color textColor, Color fillColor) :
+    public VisualSymbolicExpressionTreeNode(ISymbolicExpressionTreeNode symbolicExpressionTreeNode, Color lineColor, Color textColor, Color fillColor) :
       this(symbolicExpressionTreeNode, lineColor, textColor, fillColor, defaultPreferredWidth, defaultPreferredHeight) {
     }
 
-    public VisualSymbolicExpressionTreeNode(SymbolicExpressionTreeNode symbolicExpressionTreeNode, Color lineColor, Color textColor, Color fillColor, int width, int height) {
+    public VisualSymbolicExpressionTreeNode(ISymbolicExpressionTreeNode symbolicExpressionTreeNode, Color lineColor, Color textColor, Color fillColor, int width, int height) {
       this.symbolicExpressionTreeNode = symbolicExpressionTreeNode;
       this.lineColor = lineColor;
@@ -82,6 +82,6 @@
     #endregion
 
-    private SymbolicExpressionTreeNode symbolicExpressionTreeNode;
-    public SymbolicExpressionTreeNode SymbolicExpressionTreeNode {
+    private ISymbolicExpressionTreeNode symbolicExpressionTreeNode;
+    public ISymbolicExpressionTreeNode SymbolicExpressionTreeNode {
       get { return this.symbolicExpressionTreeNode; }
     }
Index: branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbol.cs
===================================================================
--- branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbol.cs	(revision 5512)
+++ branches/DataAnalysis Refactoring/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Interfaces/ISymbol.cs	(revision 5513)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using HeuristicLab.Core;
 
@@ -25,5 +26,7 @@
   public interface ISymbol : INamedItem {
     ISymbolicExpressionTreeNode CreateTreeNode();
-    double InitialFrequency { get; }
+    double InitialFrequency { get; set; }
+
+    event EventHandler Changed;
   }
 }
