improved character movement