fixed basic movement logic