inherit from abstract class