base_move and base_move_mainimpl written (untested, but compiles