@SuppressWarnings("unchecked")
	protected boolean addValue(String subject, String variable, String value, boolean addToLines)
	{
		//if no subject, quit
		if ((subject == null) || (subject.length()==0)) return false;

		//if no variable, quit
		if ((variable == null) || (variable.length()==0)) return false;

		//if the subject doesn't exist, add it to the end
		if (!subjects.contains(subject)) 
		{
			subjects.addElement(subject);
			variables.addElement(new Vector());
			values.addElement(new Vector());
		}

		//set the value, if the variable doesn't exist, add it to the end of the subject
		int subjectIndex = subjects.indexOf(subject);
		Vector<String> subjectVariables = (variables.elementAt(subjectIndex));
		Vector<String> subjectValues = (values.elementAt(subjectIndex));
		if (!subjectVariables.contains(variable))
		{
			subjectVariables.addElement(variable);
			subjectValues.addElement(value);
		}
		int variableIndex = subjectVariables.indexOf(variable);
		subjectValues.setElementAt(value,variableIndex);

		//add it to the lines vector?
		if (addToLines)
			setLine(subject,variable,value);

		return true;
	}