1) Reorganized the way protections are done internally
2) Fixed a bug that would sometimes cause protections to show up available for versions that they weren't entirely applicable.
3) Removed some redundant code in a couple of checks that wasn't needed.