isValid and isFilled should only be used by the solver class