add worker abstraction and amqp funcs