Redid a lot of structure, cleaner now and uses a little reflection at startup to clean up code.