Index: /trunk/sources/HeuristicLab.Collections/3.3/IObservableArray.cs
===================================================================
--- /trunk/sources/HeuristicLab.Collections/3.3/IObservableArray.cs	(revision 5927)
+++ /trunk/sources/HeuristicLab.Collections/3.3/IObservableArray.cs	(revision 5928)
@@ -26,4 +26,7 @@
   public interface IObservableArray<T> : IList<T>, INotifyObservableArrayItemsChanged<T>, INotifyPropertyChanged {
     int Length { get; }
+
+    void Reverse();
+    void Reverse(int index, int count);
   }
 }
Index: /trunk/sources/HeuristicLab.Collections/3.3/IObservableList.cs
===================================================================
--- /trunk/sources/HeuristicLab.Collections/3.3/IObservableList.cs	(revision 5927)
+++ /trunk/sources/HeuristicLab.Collections/3.3/IObservableList.cs	(revision 5928)
@@ -23,4 +23,7 @@
 
 namespace HeuristicLab.Collections {
-  public interface IObservableList<T> : IList<T>, IObservableCollection<T>, INotifyObservableListItemsChanged<T> { }
+  public interface IObservableList<T> : IList<T>, IObservableCollection<T>, INotifyObservableListItemsChanged<T> {
+    void Reverse();
+    void Reverse(int index, int count);
+  }
 }
Index: /trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableArray.cs
===================================================================
--- /trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableArray.cs	(revision 5927)
+++ /trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableArray.cs	(revision 5928)
@@ -98,4 +98,11 @@
       throw new NotSupportedException();
     }
+
+    void IObservableArray<T>.Reverse() {
+      throw new NotSupportedException();
+    }
+    void IObservableArray<T>.Reverse(int index, int count) {
+      throw new NotSupportedException();
+    }
     #endregion
 
Index: /trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableList.cs
===================================================================
--- /trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableList.cs	(revision 5927)
+++ /trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableList.cs	(revision 5928)
@@ -93,4 +93,11 @@
 
     void ICollection<T>.Clear() {
+      throw new NotSupportedException();
+    }
+
+    void IObservableList<T>.Reverse() {
+      throw new NotSupportedException();
+    }
+    void IObservableList<T>.Reverse(int index, int count) {
       throw new NotSupportedException();
     }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.cs	(revision 5927)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.cs	(revision 5928)
@@ -337,9 +337,7 @@
       if (itemsListView.SelectedItems.Count == 1) {
         int index = itemsListView.SelectedIndices[0];
-        T item = Content[index - 1];
-        Content[index - 1] = Content[index];
+        Content.Reverse(index - 1, 2);
         itemsListView.Items[index].Selected = false;
         itemsListView.Items[index - 1].Selected = true;
-        Content[index] = item;
       }
     }
@@ -347,9 +345,7 @@
       if (itemsListView.SelectedItems.Count == 1) {
         int index = itemsListView.SelectedIndices[0];
-        T item = Content[index + 1];
-        Content[index + 1] = Content[index];
+        Content.Reverse(index, 2);
         itemsListView.Items[index].Selected = false;
         itemsListView.Items[index + 1].Selected = true;
-        Content[index] = item;
       }
     }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 5927)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 5928)
@@ -352,9 +352,7 @@
       if (itemsListView.SelectedItems.Count == 1) {
         int index = itemsListView.SelectedIndices[0];
-        T item = Content[index - 1];
-        Content[index - 1] = Content[index];
+        Content.Reverse(index - 1, 2);
         itemsListView.Items[index].Selected = false;
         itemsListView.Items[index - 1].Selected = true;
-        Content[index] = item;
       }
     }
@@ -362,9 +360,7 @@
       if (itemsListView.SelectedItems.Count == 1) {
         int index = itemsListView.SelectedIndices[0];
-        T item = Content[index + 1];
-        Content[index + 1] = Content[index];
+        Content.Reverse(index, 2);
         itemsListView.Items[index].Selected = false;
         itemsListView.Items[index + 1].Selected = true;
-        Content[index] = item;
       }
     }
