Refactored the plugin so that it's structured to build as a unit