better design, validations, events