Prioritize plugins & DRY subclass instantiation

Cleaned up the code from #478 with @mattr-'s code in #841.