Implemented the output protocols