public ArrayList<Rod> getMaximumRevenueRods(int totalLength, ArrayList<Rod> rodList) {
		this.totalLength = totalLength;
		// Similar to Knapsack, we make a list of possibilities to choose from which is large
		// than the total length of the rod (same as objects exceeding knapsack capacity)
		createNodePossibilities(rodList);
		
		//int capacity = totalLength;
		int idCount = possibilities.size();
		// generate a 2d array (table) with total length and object id's set to the profit totals
		double[][] profits = new double[idCount][totalLength + 1];
		
		// now we fill in the table to get the max revenue
		for(int id = 0; id < idCount; id++) {
			for(int length = 0; length <= totalLength; length++) {
				double price = possibilities.get(id).getPrice();
				profits[id][length] = maxProfit(id, length, price, possibilities, profits); // this is not right, but it will be similar to this maybe ...
			}
		}
		
		// Print Table
		//*
		System.out.print("\t");
		for(int len = 0; len <= totalLength; len++) {
			System.out.print(len + "\t");
		}
		System.out.println();
		for(int id = 0; id < idCount; id++) {
			System.out.print(id + "\t");
			for(int len = 0; len <= totalLength; len++) {
				System.out.print(profits[id][len] + "\t");
			}
			System.out.println();
		}
		ArrayList<Rod> results = trackBack(profits, possibilities.size() - 1,totalLength, possibilities);
		return results;
	}