docs: function(evtStr, handler) {
              var events = evtStr.split(SPACE),
                  len = events.length,
                  n, event, parts, baseEvent, name;
  
               /*
               * loop through types and attach event listeners to
               * each one.  eg. 'click mouseover.namespace mouseout'
               * will create three event bindings
               */
              for(n = 0; n < len; n++) {
                  event = events[n];
                  parts = event.split(DOT);
                  baseEvent = parts[0];
                  name = parts[1] || EMPTY_STRING;
  
                  // create events array if it doesn't exist
                  if(!this.eventListeners[baseEvent]) {
                      this.eventListeners[baseEvent] = [];
                  }
  
                  this.eventListeners[baseEvent].push({
                      name: name,
                      handler: handler
                  });
  
                  // NOTE: this flag is set to true when any event handler is added, even non
                  // mouse or touch gesture events.  This improves performance for most
                  // cases where users aren't using events, but is still very light weight.  
                  // To ensure perfect accuracy, devs can explicitly set listening to false.
                  /*
                  if (name !== KINETIC) {
                      this._listeningEnabled = true;
                      this._clearSelfAndAncestorCache(LISTENING_ENABLED);
                  }
                  */
              }
  
              return this;
          }