public String render(){
		String s = "";
		//keep track of whether the previous part of the term was wrapped with parentheses
		//this is so we can distinguish between 62 and 6(2), etc.
		boolean prevHadPar = true;
		String prevClass = "";//the name of the class of the previous part of the term
		for(int i = 0; i < this.parts.size(); i++){
			AlgebraicParticle p = this.parts.get(i);
			String curClass = p.getClass().getSimpleName();
			
			//if the exponent is not 1, the other class will take care of pars (if they're needed)
			//or if the sign is negative and it's not the first element, then it needs parentheses
			boolean needsPar = p.exponent() == 1 && (!p.sign() && i != 0 || curClass.equals("Expression") || curClass.equals("Fraction"));
			
			//MixedNumber and Number should only be wrapped with pars if the previous part was a number and it didn't have pars
			if((curClass.equals("MixedNumber") || curClass.equals("Number")) && prevClass.equals("Number")) needsPar = !prevHadPar;
			s += needsPar ? "(" + p.render() + ")"	: p.render();
			
			prevClass = curClass;
			prevHadPar = needsPar;
		}
		return wrapWithSignParAndExponent(s, true);
	}