implemented write channels api