add hlist instead of channle's "container/list" for save memory