Change protocol organization to using futures.