Made BaseComponent and abstract class