Add description field for components
Added GenericComponent, a subclass of component which operates on generic types