public function api($name) {
    switch ($name) {
      case 'campaign':
      case 'campaigns':
        $api = new Api\Assets\Campaign($this);
        break;

      case 'contact':
      case 'contacts':
        $api = new Api\Data\Contact($this);
        break;

      case 'email':
      case 'emails':
        $api = new Api\Assets\Email($this);
        break;

      case 'customObject':
      case 'customObjects':
        $api = new Api\Assets\CustomObject($this);
        break;

      case 'optionList':
      case 'optionLists':
        $api = new Api\Assets\OptionList($this);
        break;

      case 'program':
      case 'programs':
        $api = new Api\Assets\Program($this);
        break;

      case 'visitor':
      case 'visitors':
        $api = new Api\Data\Visitor($this);
        break;

      default:
        throw new InvalidArgumentException(sprintf('Undefined API instance: "%s"', $name));
    }

    return $api;
  }