code: function BaseN(options) {
  
      var self = this;
      var opt = options || {};
  
      // assert
      if (opt.max && opt.length) {
          throw new Error('cannot specify both max and length');
      }
  
      // merge in default options
      for (var key in DEFAULT_OPTIONS) {
          if (!opt.hasOwnProperty(key)) {
              opt[key] = DEFAULT_OPTIONS[key];
          }
      }
  
      /**
       * a string of all allowed characters used for encoding/decoding.
       * @type {String}
       */
      self.characters = opt.characters;
  
      /**
       * number of unique characters used to encode ids.
       * @type {Number}
       */
      self.base = opt.base || opt.characters.length;
  
      /**
       * max length of id string.
       * @type {Number}
       */
      self.length = opt.length || self._findLength(opt.max);
  }
docs: BaseN. Uses a baseN scheme to encode/decode integers
  @param {Object} options an options object
  @constructor