entity polymorphism