created a low level base for protocol so that pidgeon can be adapted to
exotic protocols as well