Index: trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataRow.cs
===================================================================
--- trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataRow.cs	(revision 4887)
+++ trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataRow.cs	(revision 5097)
@@ -34,5 +34,6 @@
   [Item("DataRow", "A row of data values.")]
   [StorableClass]
-  public sealed class DataRow : NamedItem {
+  public class DataRow : NamedItem {
+    [Storable(Name = "VisualProperties")]
     private DataRowVisualProperties visualProperties;
     public DataRowVisualProperties VisualProperties {
@@ -54,9 +55,4 @@
 
     #region Persistence Properties
-    [Storable(Name = "VisualProperties")]
-    private DataRowVisualProperties StorableVisualProperties {
-      get { return VisualProperties; }
-      set { VisualProperties = value; }
-    }
     [Storable(Name = "values")]
     private IEnumerable<double> StorableValues {
@@ -67,6 +63,6 @@
 
     [StorableConstructor]
-    private DataRow(bool deserializing) : base(deserializing) { }
-    private DataRow(DataRow original, Cloner cloner)
+    protected DataRow(bool deserializing) : base(deserializing) { }
+    protected DataRow(DataRow original, Cloner cloner)
       : base(original, cloner) {
       this.VisualProperties = (DataRowVisualProperties)cloner.Clone(original.visualProperties);
@@ -107,5 +103,5 @@
 
     public event EventHandler VisualPropertiesChanged;
-    private void OnVisualPropertiesChanged() {
+    protected virtual void OnVisualPropertiesChanged() {
       EventHandler handler = VisualPropertiesChanged;
       if (handler != null) handler(this, EventArgs.Empty);
Index: trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs
===================================================================
--- trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs	(revision 4887)
+++ trunk/sources/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs	(revision 5097)
@@ -37,9 +37,10 @@
   [Item("DataTable", "A table of data values.")]
   [StorableClass]
-  public sealed class DataTable : NamedItem, IStringConvertibleMatrix {
+  public class DataTable : NamedItem, IStringConvertibleMatrix {
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Performance; }
     }
 
+    [Storable(Name = "VisualProperties")]
     private DataTableVisualProperties visualProperties;
     public DataTableVisualProperties VisualProperties {
@@ -62,9 +63,4 @@
 
     #region Persistence Properties
-    [Storable(Name = "VisualProperties")]
-    private DataTableVisualProperties StorableVisualProperties {
-      get { return VisualProperties; }
-      set { VisualProperties = value; }
-    }
     [Storable(Name = "rows")]
     private IEnumerable<DataRow> StorableRows {
@@ -75,6 +71,6 @@
 
     [StorableConstructor]
-    private DataTable(bool deserializing) : base(deserializing) { }
-    private DataTable(DataTable original, Cloner cloner)
+    protected DataTable(bool deserializing) : base(deserializing) { }
+    protected DataTable(DataTable original, Cloner cloner)
       : base(original, cloner) {
       this.VisualProperties = (DataTableVisualProperties)cloner.Clone(original.visualProperties);
@@ -114,5 +110,5 @@
 
     public event EventHandler VisualPropertiesChanged;
-    private void OnVisualPropertiesChanged() {
+    protected virtual void OnVisualPropertiesChanged() {
       EventHandler handler = VisualPropertiesChanged;
       if (handler != null) handler(this, EventArgs.Empty);
@@ -123,5 +119,5 @@
     }
 
-    private void RegisterRowsEvents() {
+    protected virtual void RegisterRowsEvents() {
       rows.ItemsAdded += new CollectionItemsChangedEventHandler<DataRow>(rows_ItemsAdded);
       rows.ItemsRemoved += new CollectionItemsChangedEventHandler<DataRow>(rows_ItemsRemoved);
@@ -158,5 +154,5 @@
     }
 
-    private void RegisterRowEvents(DataRow row) {
+    protected virtual void RegisterRowEvents(DataRow row) {
       row.Values.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<double>>(Values_ItemsAdded);
       row.Values.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem<double>>(Values_ItemsMoved);
@@ -165,5 +161,5 @@
       row.Values.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<double>>(Values_CollectionReset);
     }
-    private void DeregisterRowEvents(DataRow row) {
+    protected virtual void DeregisterRowEvents(DataRow row) {
       row.Values.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<double>>(Values_ItemsAdded);
       row.Values.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem<double>>(Values_ItemsMoved);
@@ -233,5 +229,5 @@
 
     public event EventHandler<EventArgs<int, int>> ItemChanged;
-    private void OnItemChanged(int rowIndex, int columnIndex) {
+    protected virtual void OnItemChanged(int rowIndex, int columnIndex) {
       var handler = ItemChanged;
       if (handler != null) handler(this, new EventArgs<int, int>(rowIndex, columnIndex));
@@ -239,20 +235,20 @@
     }
     public event EventHandler Reset;
-    private void OnReset() {
+    protected virtual void OnReset() {
       var handler = Reset;
       if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler ColumnNamesChanged;
-    private void OnColumnNamesChanged() {
+    protected virtual void OnColumnNamesChanged() {
       var handler = ColumnNamesChanged;
       if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler RowNamesChanged;
-    private void OnRowNamesChanged() {
+    protected virtual void OnRowNamesChanged() {
       var handler = RowNamesChanged;
       if (handler != null) handler(this, EventArgs.Empty);
     }
     public event EventHandler SortableViewChanged;
-    private void OnSortableViewChanged() {
+    protected virtual void OnSortableViewChanged() {
       var handler = SortableViewChanged;
       if (handler != null) handler(this, EventArgs.Empty);
