optimize publish, make it not call children channels