suport multi consumer function