upcast to use polymorphism