Move protocol to own header file