Restructure tests so they don't get run multiple times
Modify metaclass to differentiate between different subclasses
Merge branch 'fix-tests' into develop