create abstract class to provide a basic functionality for Components