def process(proc_data):
    """
    Final processing to conform to the schema.

    Parameters:

        proc_data:   (dictionary) raw structured data to process

    Returns:

        List of dictionaries. Structured data with the following schema:

        [
          {
            "id":             integer,
            "opcode":         string,
            "status":         string,
            "flags": [
                              string
            ],
            "query_num":      integer,
            "answer_num":     integer,
            "authority_num":  integer,
            "additional_num": integer,
            "axfr": [
              {
                "name":       string,
                "class":      string,
                "type":       string,
                "ttl":        integer,
                "data":       string
              }
            ],
            "question": {
              "name":         string,
              "class":        string,
              "type":         string
            },
            "answer": [
              {
                "name":       string,
                "class":      string,
                "type":       string,
                "ttl":        integer,
                "data":       string
              }
            ],
            "authority": [
              {
                "name":       string,
                "class":      string,
                "type":       string,
                "ttl":        integer,
                "data":       string
              }
            ],
            "query_time":     integer,   # in msec
            "server":         string,
            "when":           string,
            "rcvd":           integer
            "size":           string
          }
        ]
    """
    for entry in proc_data:
        int_list = ['id', 'query_num', 'answer_num', 'authority_num',
            'additional_num', 'rcvd']
        for key in int_list:
            if key in entry:
                try:
                    key_int = int(entry[key])
                    entry[key] = key_int
                except ValueError:
                    entry[key] = None
        if 'axfr' in entry:
            for ax in entry['axfr']:
                try:
                    ttl_int = int(ax['ttl'])
                    ax['ttl'] = ttl_int
                except ValueError:
                    ax['ttl'] = None
        if 'answer' in entry:
            for ans in entry['answer']:
                try:
                    ttl_int = int(ans['ttl'])
                    ans['ttl'] = ttl_int
                except ValueError:
                    ans['ttl'] = None
        if 'authority' in entry:
            for auth in entry['authority']:
                try:
                    ttl_int = int(auth['ttl'])
                    auth['ttl'] = ttl_int
                except ValueError:
                    auth['ttl'] = None
        if 'query_time' in entry:
            try:
                qt_int = int(entry['query_time'].split()[0])
                entry['query_time'] = qt_int
            except ValueError:
                entry['query_time'] = None
    return proc_data
