diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index f0940fe..37d836e 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -3032,6 +3032,8 @@ Editor::separate_regions_between (const TimeSelection& ts)
 
 						latest_regionviews.clear ();
 
+						XMLNode* orig_state = &playlist->get_state();
+
 						playlist->partition ((framepos_t)((*t).start * speed),
 								(framepos_t)((*t).end * speed), false);
 
@@ -3048,16 +3050,8 @@ Editor::separate_regions_between (const TimeSelection& ts)
 								in_command = true;
 							}
 
-							/* pick up changes to existing regions */
-
-							vector<Command*> cmds;
-							playlist->rdiff (cmds);
-							_session->add_commands (cmds);
-
-							/* pick up changes to the playlist itself (adds/removes)
-							 */
-
-							_session->add_command(new StatefulDiffCommand (playlist));
+							_session->add_command(new MementoCommand<Playlist>(
+							    *playlist, orig_state, &playlist->get_state()));
 						}
 					}
 				}
