Refactoring protocols to support client plugability
just ident