work queue example and move some things to a common module