fix polymorphism stuff