public void FollowInstruction(Instruction instruction)
        {
            switch (instruction.InstructionType)
            {
            case InstructionType.Left:
                WaypointRelativePosition.RotateRelativeLeft(instruction.Value);
                break;

            case InstructionType.Right:
                WaypointRelativePosition.RotateRelativeRight(instruction.Value);
                break;

            case InstructionType.Forward:
                GeoPosition.AdjustPosition(WaypointRelativePosition, instruction.Value);
                break;

            case InstructionType.North:
            case InstructionType.East:
            case InstructionType.South:
            case InstructionType.West:
                WaypointRelativePosition.AdjustPosition(MapInstructionToDirection(instruction.InstructionType), instruction.Value);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }