private Map<Date, Double> flexi(Date registrationDate, String plan, int textCount, String options,
			String payAsYouGoLevel, int callTime) {
		final Properties prop = loadProperties();

		double amount = 0;
		double rate = 0;
		double fee = 0;
		int builtInTime = 0; // mn
		if (FLEXI_S.equals(plan)) {
			rate = Double.parseDouble(prop.getProperty("flexi.small.rate"));
			fee = Double.parseDouble(prop.getProperty("flexi.small.fee"));
			builtInTime = 15;
		}
		if (FLEXI_L.equals(plan)) {
			rate = Double.parseDouble(prop.getProperty("flexi.large.rate"));
			fee = Double.parseDouble(prop.getProperty("flexi.large.fee"));
			builtInTime = 30;
			if (country.equals("UK")) {
				builtInTime = 25;
			}
		}
		if (FLEXI_XL.equals(plan)) {
			rate = Double.parseDouble(prop.getProperty("flexi.extra.rate"));
			fee = Double.parseDouble(prop.getProperty("flexi.extra.fee"));
			builtInTime = 45;
			if (country.equals("UK")) {
				builtInTime = 40;
			}
		}
		int extraTime = callTime - builtInTime;
		if (extraTime < 0) {
			extraTime = 0;
		}
		if (country.equals("UK")) {
			amount = fee + extraTime * rate + textCount * 0.15;
		} else {
			amount = fee + extraTime * rate + textCount * 0.10;
		}
		Date paymentDate = getPaymentDate(registrationDate);

		final Map<Date, Double> map = new HashMap<Date, Double>();
		double total = Math.round((amount) * 100.) / 100.;
		map.put(paymentDate, total);
		return map;
	}