add service provider trait