public FixedRateMortgage(Double loan, InterestRate interest, LoanDuration duration) {

        if (interest != null) {
            if (duration != null) {
                if (loan > 0) {
                    interestRate = interest;
                    loanDuration = duration;
                    loanAmount   = loan;
                    fixedMonthlyPayment = INITIAL_PAYMENT_AMT;
                    paymentDetailList = new ArrayList<AmortizeDetail>();

                } else {
                    throw new IllegalArgumentException("Invalid loan amount, it should be > 0.");
                }
            } else {
                throw new IllegalArgumentException("Invalid duration, it is Null.");
            }
        } else {
            throw new IllegalArgumentException("Invalid interest rate, it is Null.");
        }
    }