Finished Protocol refactor.