communicate via channel instead of socket