More protocols. Moved methods into extensions.