function ParentAPI(info) {
      var _this = this;

      this.parent = info.parent;
      this.frame = info.frame;
      this.child = info.child;
      this.childOrigin = info.childOrigin;
      this.events = {};

      {
        log('Parent: Registering API');
        log('Parent: Awaiting messages...');
      }

      this.listener = function (e) {
        if (!sanitize(e, _this.childOrigin)) return false;
        /**
         * the assignments below ensures that e, data, and value are all defined
         */

        var _ref = ((e || {}).data || {}).value || {},
            data = _ref.data,
            name = _ref.name;

        if (e.data.postmate === 'emit') {
          {
            log("Parent: Received event emission: " + name);
          }

          if (name in _this.events) {
            _this.events[name].forEach(function (callback) {
              callback.call(_this, data);
            });
          }
        }
      };

      this.parent.addEventListener('message', this.listener, false);

      {
        log('Parent: Awaiting event emissions from Child');
      }
    }
Composes an API to be used by the parent
@param {Object} info Information on the consumer