initial protocol implementation