Is plugin really ever required?  Based on the scope your functions and the fact that they are inherited would seem not.

This is the way I always think of plugins and might help you better understand the Javascript scope (imagine this code is inside a plugin file):

`````
// exports === Plugin (Plugin being the Plugin object that is created for each plugin in plugins.js);
exports.foo = function () {
    // this === exports === Plugin
   var plugin = this;
   class.method(foo, function called_after_async_results_returned (err, result) {
       // this === class
       // plugin === exports === Plugin
   });
`````

You often see us set a reference to 'this' so that we can refer to the outer scope inside a closure function.