moved validation to their respective models