code: function( element, options, defaults ) {
          // local var for instance
          var inst = this;
          // the source element for this instance
          inst.source = $(element);
          // get and set id for the instance
          inst.id = inst.source.attr('id') || null;
          // collect and define settings from:
          // 1. the default options defined when plugin was created
          // 2. the source element's dataset – ie. data-[key]="[value]"
          // 3. the options passed in on init - ie. $(...).myplugin({options})
          inst.settings = $.extend({}, defaults, dataset(inst.source[0]), options );
          // collect any element the refernces our source element
          inst.references = inst.id !== null ? $('[href="#'+inst.id+'"],[data-bind="#'+inst.id+'"]') : $();
          // organize references by role for easier access
          inst.roles = {};
          inst.references.filter('[data-role]').each(function(){
              // get the role name(s) from element
              var roles = $(this).data('role').split('|');
              // add element to each role attribute it belongs to
              for( var i=0; i<roles.length; i++ ) {
                  // if role doesn't exists, create it
                  if( !inst.roles.hasOwnProperty(roles[i]) ) inst.roles[roles[i]] = $();
                  // add this element to appropriate slot
                  inst.roles[roles[i]] = inst.roles[roles[i]].add(this);
              }
          });
          // return instance
          return this;
      }
docs: ------------------------------------------------------------- 
  The base object; that all plugins inherit from
  
  @param {object} element DOMelement
  @param {object} options app settings for instance
  @param {object} defaults app settings defaults
  @return {object} instance