implement actual move (untested) and extra unit tests