proper polymorphic models