implement channel methods