public void start() {
        ConsoleReader consoleReader;
        try {
            consoleReader = new ConsoleReader();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        while(true) {
            int key;
            try {
                key = consoleReader.readVirtualKey();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            for(Controller controller : controllers) {
                if(controller.acceptsInput(key)) {
                    if(controllers.indexOf(controller) == 0 || controller.acceptInputWhenNotActive()) {
                            controller.actOnInput(key);
                            break;
                    }
                }
            }
        }
    }