allow for custom attributes, complements is_extensible