docs: function(o, callback) {
        if (!o) return callback('details(): parameter o NOT FOUND.');
        if (!o.titles) return callback('details(): o.titles NOT FOUND.');
        var p = {};
        p.titles = _.slice(o.titles, 0, 20);
        var len = p.titles.length;
        p.prop = {
          extracts: {
            exlimit: len,
            exchars: (o.abstracts ? o.abstracts : undefined)
          },
          pageimages: {
            pilimit: len,
            pithumbsize: (o.size || 200)
          }
        };
        var url = this.url; 
        if (!url || !callback) return mwapi.query(p);
        mwapi.query(p, url, function(err, data) {
          if (err) return callback(err);
          var pageids = data.query.pageids;
          if (_.isEqual(pageids, [ '-1' ])) {
            return callback('', []);
          } else {
            var ret = _.map(pageids, function(id) {
              return data.query.pages[id];
            });
            return callback('', ret);
          }
        });
      }