complete refactor of DI. it still doesn't work, but it has a better potential to