refactor movement as per #2