simple protocol framework