@Override
  public Option<Address> findAddressOfOwnerByPhoneNumber(
      Integer ownerId,
      String number,
      String internationalPrefix,
      String countryPrefix,
      String nationalPrefix,
      String localPrefix) {
    if (numberNormalization == NumberNormalizationType.REMOVE_PREFIX) {
      number =
          removePrefixesFromPhoneNumber(
              number, internationalPrefix, countryPrefix, nationalPrefix, localPrefix);

      logger.debug("Private DAO-Store address resolution with number: " + number);

      List<PhoneNumber> phoneNumbers = findPhoneNumbersOfOwnerEndingWith(number, ownerId);

      for (PhoneNumber phoneNumber : phoneNumbers) {
        String internalNumber = phoneNumber.getInternalNumber();

        Option<Address> address = null;

        // Add like 0049
        if (internalNumber.equals(countryPrefix + number)) {
          address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId);
        }

        // Add like 0231
        if (internalNumber.equals(nationalPrefix + localPrefix + number)) {
          address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId);
        }

        // Add like 00 (Fallback for dummy prefix user)
        if (internalNumber.equals("00" + number)) {
          address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId);
        }

        // Add like 0
        if (internalNumber.equals("0" + number)) {
          address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId);
        }

        if (internalNumber.equals(number)) {
          address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId);
        }

        if (address.full()) {
          address.get().setAddressStore(this);

          return address;
        }
      }
    } else if (numberNormalization == NumberNormalizationType.ADD_INTERNATIONAL_COUNTRY_PREFIX) {
      String normNumber =
          normalizeNumber(number, internationalPrefix, countryPrefix, nationalPrefix, localPrefix);
      Option<Address> address = findAddressOfOwnerByPhoneNumber(number, ownerId);
      if (address.full()) {
        address.get().setAddressStore(this);
        return address;
      }
      address = findAddressOfOwnerByPhoneNumber(normNumber, ownerId);
      if (address.full()) {
        address.get().setAddressStore(this);
        return address;
      }
    } else if (numberNormalization == NumberNormalizationType.NO_NORMALIZATION) {
      Option<Address> address = findAddressOfOwnerByPhoneNumber(number, ownerId);
      if (address.full()) {
        address.get().setAddressStore(this);
        return address;
      }
    }

    return new Empty();
  }