Merge branch 'protocol-refactored'