fix consumer and add async