public ProjectInput getInput() throws Exception {
		TreeMap<Double, Double> map = new TreeMap<>();
		ProjectInput input = new ProjectInput();
		
		/** Get Polynomials **/
		
		for (Component component : panPolynomials.getComponents()) {
			PolynomialField field = (PolynomialField) component;
			double exponent = 0;
			double coefficient = 0;
			
			try {
				exponent = field.getExponent();
				coefficient = field.getCoefficient();
			}
			catch (Exception e) {}
			
			try {
				coefficient += map.get(exponent);
			}
			catch (Exception e) {}
			
			map.put(exponent, coefficient);
		}
		
		if (map.isEmpty()) {
			return null;
		}
		
		input.initializePolynomial();
		
		for (Entry<Double, Double> entry : map.entrySet()) {
			Term term = new Term();
			
			if (entry.getValue() != 0) {
				term.setPower(entry.getKey());
				term.setNumber(entry.getValue());
				
				input.add(term);
			}
		}
		
		/** Get Parameters **/
		
		/* Get Interval / Starting Points */
		input.setX0(Double.parseDouble(txtX0.getText()));
		input.setX1(Double.parseDouble(txtX1.getText()));
		
		/* Get Iterations */
		Limit iteration = new Limit();
		if (chkbxIterations.isSelected()) {
			iteration.setEnabled(true);
			iteration.setValue(Double.parseDouble(spinIterations.getValue().toString()));
		}
		input.setIteration(iteration);
		
		/* Get Threshold */
		Limit threshold = new Limit();
		if (chkbxThreshold.isSelected()) {
			threshold.setEnabled(true);
			threshold.setValue(Double.parseDouble(txtThreshold.getText().toString()));
		}
		input.setThreshold(threshold);
		
		return input;
	}