Refactor some of the core classes, and add concept of Infrastructure for use in provisioning the services used by the workflows