-void MoveSelectedObjectsTo(std::vector<void *> & dest, std::vector<void *> & from);
-void AddObjectsTo(std::vector<void *> & dest, std::vector<void *> & from);
-void ClearSelected(std::vector<void *> & v);
-void SelectAll(std::vector<void *> & v);
-void DeleteContents(std::vector<void *> & v);
-void DeleteSelectedObjects(std::vector<void *> & v);
-void RemoveSelectedObjects(std::vector<void *> & v);
-void SavePointsFrom(std::vector<void *> & v, std::vector<Object> & s);
-void RestorePointsTo(std::vector<void *> & v, std::vector<Object> & s);
+Object * CopyObject2(Object * obj);
+void MoveSelectedObjectsTo(VPVector & dest, VPVector & from);
+VPVector MoveSelectedObjectsFrom(VPVector & from);
+void CopySelectedObjectsTo(VPVector & dest, VPVector & from);
+VPVector CopySelectedObjects(VPVector & from);
+void AddObjectsTo(VPVector & dest, VPVector & from);
+void ClearSelected(VPVector & v);
+void SelectAll(VPVector & v);
+void DeleteContents(VPVector & v);
+void DeleteSelectedObjects(VPVector & v);
+void RemoveSelectedObjects(VPVector & v);
+void RemoveHoveredObjects(VPVector & v);
+void SavePointsFrom(VPVector & v, std::vector<Object> & s);
+void RestorePointsTo(VPVector & v, std::vector<Object> & s);
+void RestorePointsTo(VPVector & v, VPVector & s);