new ActiveModel callbacks + Dirty; MAJOR REFACTOR: accessors instead of method_missing