Complete rework of the framework because shit was cray