cleaned up component class signature