Refactor valid? out of save