Base classes for protocol abstractions.