added pointers & polymorphism