def create_party_address(base_address=None,
                         street=None,
                         street_additional=None,
                         city=None,
                         country=None,
                         postal_code=None,
                         region=None):
    """Create party address with option to provide base address and override properties as necessary."""
    if base_address:
        party_address = base_address
        party_address['streetAddress'] = street if street is not None else party_address['streetAddress']
        party_address['streetAddressAdditional'] = street_additional \
            if street_additional is not None else party_address['streetAddressAdditional']
        party_address['addressCity'] = city if city is not None else party_address['addressCity']
        party_address['addressCountry'] = country if country is not None else party_address['addressCountry']
        party_address['postalCode'] = postal_code if postal_code is not None else party_address['postalCode']
        party_address['addressRegion'] = region if region is not None else party_address['addressRegion']
    else:
        return {
               'streetAddress': street,
               'streetAddressAdditional': street_additional,
               'addressCity': city,
               'addressCountry': country,
               'postalCode': postal_code,
               'addressRegion': region
           }

    return party_address