area function polymorphism