eschewing dat spaghetti with PSR, also some namespacing stuff, not finished