public boolean moveController(String move_str,Player current_player){
        move_str = move_str.toUpperCase();
        if (move_str.equals("PASS")  || move_str.equals("P")){
            view.printLine("Ok, you are passing. Better luck next time.");
            return true;
        }
        if (move_str.equals("SHUFFLE") || move_str.equals("S")){
            current_player.shuffleTiles();
            //view.printLine(current_player.getName() + ", it's your move. Tiles: " + current_player.listTiles() );
            return false;
        }
        String[] args = move_str.split(",");
        if (args.length != 4) {
            view.printLine("Input error - please make sure you enter a move in the format {row},{column},{> or ^},{word}");
            return false;
        }
        if (args[0].equals("EXCHANGE")  || args[0].equals("EX")){
            //TODO: validate tiles (player can only exchange tiles that she has)
            ArrayList<String> exchanges = new ArrayList<String>(Arrays.asList(Arrays.copyOfRange(args, 1, args.length)));
            view.printLine("Exchanging: " + exchanges.toString());
            current_player.exchangeTiles(exchanges);
            return true;
        }
        //TODO: validate move args
        int row = ( (int) args[0].charAt(0)) - 65;
        int column = Integer.parseInt(args[1]) - 1;
        boolean across = (args[2].equals(">"));
        String word = args[3];

        Move move = new Move(model, row, column, word, across, current_player);

        if ( move.checkMove() )  {
            int score = move.makeMove();
            view.printLine("Well done, that move scored " + score + " points.");
            int new_total_score = current_player.getScore() + score;
            current_player.setScore( new_total_score );
            while (current_player.getTiles().size() < model.num_tiles){
                current_player.addTile(model.tile_bag.randomDraw());
            }
            return true;
        }
        else {
            //print message? Move will print its own details about why not valid?
            view.printLine(move.getError_message());
            return false;
        }
    }