making use of abstract class