Singularity refactor continuation

Using IOC patterning