allocate by channel