My first thought, after letting my subconscious mull on it, was to add a small delay in the 'Goto' code: pause a short while between 'moves'. Pondering further, the 'invisible barbarians' thing might be the same problem: when a unit completes a move, there needs to be a pause so the user can see and adjust to any results. I don't recall off-hand how many "movement done" handlers there are, but that seems like an appropriate location to experiment with. Action on the screen is definitely too fast: transition away from the current unit is large and jarring sometimes. A well-designed game loop should take system speed into account and provide a consistent and smooth update behavior. I've been focused on bug fixes and features to-date and have not dug into the foundations yet.