public Number subtract(Number num2) {
		String storage = new String(this.number);
		String result = new String(new CharNode('\0'));
		for(int i = 0; i < this.number.length() || i < num2.getNumber().length(); i++) {
			int one = 0, two = 0;
			try{
				one = this.number.charAt(this.number.length() - (i + 1)) -48;
			} catch (IndexOutOfBoundsException e) {};
			try{
				two = num2.getNumber().charAt(num2.getNumber().length() - (i + 1)) -48;
			} catch (IndexOutOfBoundsException e) {};
			
			if(one < two) {
				inner:for(int j = i + 1; j < this.number.length(); j++) {
					int temp = -1;
					if((temp = this.number.charAt(this.number.length() - (j + 1)) - 48) > 0) {
//						char[] temp2 = this.number.toCharArray();
//						temp2[this.number.length() - (j + 1)] = (char) (temp + 48 - 1);
						this.number.set((char)(temp + 48 - 1), this.number.length() - (j + 1));
						
						for(int k = j - 1; k > i; k--) {
							//temp2[temp2.length - (k + 1)] = '9';
							int temp2 = this.number.length() - (k + 1);
							this.number.set('9', temp2);
						}
						
						//this.number = "";
						
//						for(int k = 0; k < temp2.length; k++) {
//							this.number += temp2[k];
//						}
						one += 10;
						break inner;
					}
				}
			}
			//result = (one - two) + result;
			result.insert(new String(new CharNode((char)(one - two + 48))), 0);
		}
		Number toReturn = new Number(result);
		this.number = storage;
		return new Number(toReturn.trim());
	}