Protocol refactoring