Allow protocols to nest, so that they can wrap one-another. Code cleanup.