def METHOD_NAME(self):
    name_list = self.input.name.split()
    given_name = name_list[0]
    family_name_list = [x for x in name_list[1:] if "." not in x]
    family_name = re.sub(",", "", (" ".join(family_name_list)))
    if self.root.xpath(".//p[@class='address']"):
        address_span = CSS(".address").match(self.root)[0].text_content()
        address = ", ".join(address_span.split("\n")[:-1])
    else:
        address = ""
    node_content = CSS(".node__content").match(self.root)[0].text_content()
    contact_node = node_content.replace("\n", "").replace("\t", "")
    collected_contacts = {
        "Cell": "",
        "Fax": "",
        "Home": "",
        "Work": "",
        "Email": "",
    }
    for pattern in collected_contacts.keys():
        pattern_match = re.search(rf"({pattern}\s+)(\S+)", contact_node)
        if pattern_match:
            collected_contacts[pattern] = pattern_match.groups()[-1]
    p = ScrapePerson(
        name=self.input.name,
        given_name=given_name,
        family_name=family_name,
        state="nd",
        image=self.input.image,
        chamber=self.input.chamber,
        party=self.input.party,
        district=self.input.district,
        email=collected_contacts["Email"],
    )
    p.district_office.address = address
    p.district_office.voice = collected_contacts["Work"]
    p.district_office.fax = collected_contacts["Fax"]
    for phone_type in ("Cell", "Home"):
        if collected_contacts.get(phone_type):
            p.extras[phone_type.lower()] = collected_contacts[phone_type]
    p.add_source(str(self.source), "member details page")
    members_list_url = str(self.input.url)
    p.add_source(members_list_url, "members list page")
    return p