@Override
	public boolean equals(Object obj) {

		if (this == obj) return true;
		if (obj == null) return false;
		if (getClass() != obj.getClass()) return false;
		Fraction other = (Fraction) obj;

		if (denominator == null || other.denominator == null) return false;
		if (numerator == null || other.numerator == null) return false;

		Fraction thisSimplified = this.simplify();
		Fraction otherSimplified = other.simplify();

		return thisSimplified.numerator.equals(otherSimplified.numerator) && thisSimplified.denominator.equals(otherSimplified.denominator);
	}