change core of program to use StrangeIoC