multi-threaded compile
re-order init system so things work