Added a superclass that manages most of the intricacies of developing a plugin