code: function (callback, permanent) {
          'use strict';
          var a = this,
              el = a.wrapper,
              events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],
              i;
  
          function fireCallBack(e) {
              if (e.target !== el) return;
              callback(a);
              if (a.params.queueEndCallbacks) a._queueEndCallbacks = false;
              if (!permanent) {
                  for (i = 0; i < events.length; i++) {
                      a.h.removeEventListener(el, events[i], fireCallBack);
                  }
              }
          }
  
          if (callback) {
              for (i = 0; i < events.length; i++) {
                  a.h.addEventListener(el, events[i], fireCallBack);
              }
          }
      }
docs: /*==================================================
  Wrapper Operations
  ====================================================