explicitly require ActiveModel