channel protocol implemented