append(distinct_id, prop, value, modifiers, callback) {
        // TODO extract to ProfileHelpers

        var $append = {};

        if (typeof(prop) === 'object') {
            if (typeof(value) === 'object') {
                callback = modifiers;
                modifiers = value;
            } else {
                callback = value;
            }
            Object.keys(prop).forEach(function(key) {
                $append[key] = prop[key];
            });
        } else {
            $append[prop] = value;
            if (typeof(modifiers) === 'function') {
                callback = modifiers;
            }
        }

        var data = {
            '$append': $append,
            '$token': this.mixpanel.token,
            '$distinct_id': distinct_id
        };

        data = merge_modifiers(data, modifiers);

        if (this.mixpanel.config.debug) {
            this.mixpanel.config.logger.debug("Sending the following data to Mixpanel (Engage)", { data });
        }

        this.mixpanel.send_request({ method: "GET", endpoint: "/engage", data: data }, callback);
    }
people.append(distinct_id, prop, value, modifiers, callback)
        ---
        Append a value to a list-valued people analytics property.

        usage:

            // append a value to a list, creating it if needed
            mixpanel.people.append('bob', 'pages_visited', 'homepage');

            // like mixpanel.people.set(), you can append multiple properties at once:
            mixpanel.people.append('bob', {
                list1: 'bob',
                list2: 123
            });