changed fn to instantiate polymorphism on definitiosn