improved char movement logic