static void Main(string[] args) { string inputStr = GenerateInput(); Input input = InputManager.GetInput(inputStr); IKernel kernal = new StandardKernel(); kernal.Load(Assembly.GetExecutingAssembly()); IPlateau plateau = kernal.Get <IPlateau>(); plateau.SetPoint(new Point(input.X, input.Y)); foreach (var inputRover in input.InputRovers) { IRover rover = kernal.Get <Rover>(); rover.SetRover(plateau, new Point(inputRover.X, inputRover.Y), inputRover.CurrentDirection); rover.SetCommandParams(inputRover.Commands); RoverInvoker roverInvorker = new RoverInvoker(rover); roverInvorker.Execute(); //Output Console.WriteLine(rover.ToString()); } Console.ReadKey(); }