private boolean isValid(Move move, TKind kind) {
        // check increasing x 
        if (Check(move, 1, 0, kind, false) != 0) {
            return true;
        }
        // check decreasing x 
        if (Check(move, -1, 0, kind, false) != 0) {
            return true;
        }
        // check increasing y 
        if (Check(move, 0, 1, kind, false) != 0) {
            return true;
        }
        // check decreasing y 
        if (Check(move, 0, -1, kind, false) != 0) {
            return true;
        }
        // check diagonals 
        if (Check(move, 1, 1, kind, false) != 0) {
            return true;
        }
        if (Check(move, -1, 1, kind, false) != 0) {
            return true;
        }
        if (Check(move, 1, -1, kind, false) != 0) {
            return true;
        }
        if (Check(move, -1, -1, kind, false) != 0) {
            return true;
        }
        return false;
    }