private void RotateTractoredShip(Direction direction, Action callback) { //We need to change Selection.ThisShip before rotating. Making sure that we always change back afterwards var selectedShip = Selection.ThisShip; Selection.ThisShip = TheShip; Action resetSelection = () => { Selection.ThisShip = selectedShip; callback(); }; Action assignStress = () => { TheShip.Tokens.AssignToken(typeof(StressToken), resetSelection); }; if (direction == Direction.Left) { TheShip.Rotate90Counterclockwise(assignStress); } else if (direction == Direction.Right) { TheShip.Rotate90Clockwise(assignStress); } else { resetSelection(); } }