first pass at porting channels to cljs