made protocolProvider a field in Protocol