public ActionStatus action(int [][] arr, int score) throws CloneNotSupportedException {
        ActionStatus result = ActionStatus.CONTINUE;
        
        boolean newCellAdded = false;
        int newPoints = 0;
        
        if(!isEqual(boardArray, arr)) {
            newCellAdded = true;
            setBoardArr(arr);
            newPoints = this.score - score;
            this.score = score;       
        }
        
        if(newPoints==0 && newCellAdded==false) {
            if(isGameTerminated()) {
                result = ActionStatus.NO_MORE_MOVES;
            } else {
                result = ActionStatus.INVALID_MOVE;
            }
        }
        else {
            if(newPoints>=TARGET_POINTS) {
                result = ActionStatus.WIN;
            }
            else {
                if(isGameTerminated()) {
                    result = ActionStatus.NO_MORE_MOVES;
                }
            }
        }
        
        return result;
    }