code: function ContractRunner(config, data) {
    events.EventEmitter.call(this);
  
    var self = this;
  
    self.config = config;
  
    if (typeof data !== 'object' ||
      typeof data.manifest !== 'object') {
  
      throw new Error('ApiHandler must be instantiated with the manifest');
    }
  
    self._manifest = data.manifest;
    self._apis = {};
    self._manifest_hash = data.manifest_hash;
    self._instance_id = data.instance_id;
    self._additional_libs = data.additional_libs || '';
    self._env = data.env;
    self._nextFreeFileDescriptor = 4;
  
    // Add the manifest_hash to the manifest object so it will
    // be passed to the API modules when they are called
    self._manifest.manifest_hash = data.manifest_hash;
  
    // Setup sandbox instance
    self._sandbox  = new Sandbox({
      enableGdb: self.config.enableGdb,
      enableValgrind: self.config.enableValgrind,
      disableNacl: self.config.disableNacl
    });
  
    self._sandbox.on('exit', self.handleExit.bind(self));
  }
docs: Class to run contracts.
  
  @param {Object} data.manifest
  @param {Object} data.apis
  @param {String} data.manifest_hash