use has_attributes