code: def authors(self):
          
          out = []
          order = 'eid surname initials givenname affiliation documents '\
                  'affiliation_id city country areas'
          auth = namedtuple('Author', order)
          for item in self._json:
              name = item.get('preferred-name', {})
              aff = item.get('affiliation-current', {})
              fields = item.get('subject-area',
                                [{'@abbrev': '', '@frequency': ''}])
              if isinstance(fields, dict):
                  fields = [fields]
              areas = ["{} ({})".format(d.get('@abbrev', ''), d.get('@frequency', ''))
                       for d in fields]
              new = auth(eid=item['eid'], initials=name.get('initials'),
                         surname=name.get('surname'), areas="; ".join(areas),
                         givenname=name.get('given-name'),
                         documents=item.get('document-count', '0'),
                         affiliation=aff.get('affiliation-name'),
                         affiliation_id=aff.get('affiliation-id'),
                         city=aff.get('affiliation-city'),
                         country=aff.get('affiliation-country'))
              out.append(new)
          return out or None
docs: A list of namedtuples storing author information,
          where each namedtuple corresponds to one author.
          The information in each namedtuple is (eid surname initials givenname
          documents affiliation affiliation_id city country areas).
  
          All entries are strings or None.  Areas combines abbreviated subject
          areas followed by the number of documents in this subject.