@Override
    public void command(String command) {
        System.out.println("Dispatch " + command);
        if(command == null){
            return;
        }
        OUTER: for(Robot robot : _robots) {
            System.out.println(robot.getClass().getSimpleName());
            Class robotClass = robot.getClass();
            Method[] methods = robotClass.getMethods();
            for (Method method : methods) {
                if (method.isAnnotationPresent(RobotCommand.class)) {
                    RobotCommand rb = method.getAnnotation(RobotCommand.class);
                    if (rb.command().equals((command))) {
                        try {
                            method.invoke(robot, new Object[]{});
                            continue OUTER;
                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        } catch (InvocationTargetException e) {
                            e.printStackTrace();
                        } catch (IllegalArgumentException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            /*switch (command) {
                case "up":
                    robot.up();
                    break;
                case "down":
                    robot.down();
                    break;
                case "left":
                    robot.left();
                    break;
                case "right":
                    robot.right();
                    break;
                case "stop":
                    robot.stop();
                    break;
                default:
            }*/
        System.out.println("unknown command " + command);
    }
    }