ActiveModel 4 compat