Yes, there is a *ton* of code duplication that we *must* fix post M6. In fact I'm working on XD-1516 which also requires some duplicate logic between `ContainerListener` and `JobListener`. I'm hesitant at this point to refactor because I want to minimize the risk for the M6 release.

Mark and I have drawn up a quick design for how all of this should be tied together; starting from the controller to the admin leader to the containers. See attached whiteboard image:

![photo](https://cloud.githubusercontent.com/assets/394956/2648699/2ea1514e-bf5a-11e3-8a45-9bef53978c8b.JPG)

Additionally, Mark has a bunch of pending changes that will be really hard to merge since some of the work he's done is in the same classes.