I think this might be larger design question, but running validation here seems to be tightly coupled with the *valid? method. Do you think this is a good design? Should you separate valid? checking and error generation?

I did the exact same thing at first, but later decided to take the approach of a separate `#validate!` method.