docs: function () {
      this._ = {};
      this.listen();
  
      engines(this);
      helpers.methods(this);
      lookup(this);
  
      // temporary.
      this.define('errors', {
        compile: {
          engine: 'cannot find an engine for: ',
          method: 'expects engines to have a compile method',
        },
        render: {
          callback: 'is async and expects a callback function: ',
          engine: 'cannot find an engine for: ',
          method: 'expects engines to have a render method',
        }
      });
  
      this.loaders = {};
      this.cache = {};
      this.cache.data = {};
  
      this.cache.context = {};
      this.views = {};
  
      this.define('Base', require('./lib/base'));
      this.define('Collection', require('./lib/collection'));
      this.define('Item', require('./lib/item'));
      this.define('List', require('./lib/list'));
      this.define('View', require('./lib/view'));
      this.define('Views', require('./lib/views'));
  
      this.viewTypes = {
        layout: [],
        renderable: [],
        partial: []
      };
  
      this.inflections = {};
      this.handlers(utils.methods);
      this.delegateLoaders([
        'loader',
        'resolve',
        'compose',
        'iterator',
      ]);
  
      // initialize iterators and loaders
      loaders.iterators(this);
      loaders.base(this);
      loaders.data(this);
    }