added channel buffering