use polymorphism