Improved character movement