public void start() throws IOException {
        Replicator replicator = new ReplicatorImpl(serverStrings, me);
        replicator.initialize();

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        while (true) {
            System.out.print(">> ");
            String input = in.readLine().trim();
            if (!input.isEmpty()) {
                String[] tokens = input.split(" ");
                String command = tokens[0];
                if (CREATE_CMD.equals(command)) {
                    System.out.println("Creating replicated ArrayList");
                    Replicated<ArrayList<String>> replicated = replicator.replicate(new ArrayList<String>());
                    System.out.println("Replicated id:");
                    System.out.println(replicated.getId());
                    continue;
                }
                if (APPEND_CMD.equals(command) && tokens.length == 3) {
                    String id = tokens[1];
                    String value = tokens[2];
                    System.out.println("Appending " + value + " to " + id);
                    List<String> array = replicator.get(id);
                    array.add(value);
                    continue;
                }
                if (LOOKUP_CMD.equals(command) && tokens.length == 2) {
                    String id = tokens[1];
                    List<String> array = replicator.get(id);
                    System.out.println("Array: " + array);
                    continue;
                }
                if (POP_CMD.equals(command) && tokens.length == 2) {
                    String id = tokens[1];
                    List<String> array = replicator.get(id);
                    array.remove(array.size() - 1);
                    System.out.println("Removing the last element of " + id);
                    System.out.println("  New array: " + array);
                    continue;
                }
            }
            System.out.println("Invalid command");
        }
    }