simplest protocol interface, code refactor, smoother progress