the basic idea is complete - need some cleanup in the worker design