more ongoing refactoring

single object move ops should be moved to the new helper completely, the
opaque $opts array is gone and everything works on IDs now.

completely untested and most probably buggy though