adds a job factory interface for materializing jobs from custom sources
uses property setter to inject factory and minimize API changes.