Break Cycles out into separate modules, add shim config support for dependency resolution, better error messages