refactor reverse
differentiate moveTo moveBy