Rewrite

Moved to using a class instead of category. Added support for requirements. (Not yet fully working!)
More rewrite, not serviceable just yet