joint protocol refactor