Refactoring protocols to support client plugability
renaming it back
resorting methods