support for more flexible polymorphism