public void startElement(String uri, String localName,
			String qName, Attributes attributes) throws SAXException {
		
		// COLLECTIONS (START)
		if (qName.equalsIgnoreCase("collections")) {
			readCollections = true;
		} 
		
		// COLLECTIONS :: COLLECTION (START)
		else if (readCollections && qName.equalsIgnoreCase("collection")) {
			readCollection = true;
			
			// find current collection name
			currentCollectionName = attributes.getValue("name");
			
			// create new collection
			fieldCollections.put(currentCollectionName, new FieldCollection());
		}
		
		// COLLECTIONS :: COLLECTION :: COLOR (START)
		else if (readCollection && qName.equalsIgnoreCase("color")) {
			
			FieldCollection currentCollection = fieldCollections.get(currentCollectionName);
			
			int red = Integer.parseInt(attributes.getValue("red"));
			int green = Integer.parseInt(attributes.getValue("green"));
			int blue = Integer.parseInt(attributes.getValue("blue"));
			
			currentCollection.setColor(red, green, blue);
			
		}
		
		// FIELDS (START)
		else if (qName.equalsIgnoreCase("fields")) {
			readFields = true;
		} 
		
		// FIELDS :: FIELD (START)
		else if (readFields && qName.equalsIgnoreCase("field")) {
			readField = true;
			
			currentFieldData = new HashMap<String, String>();
			currentFieldData.put("class", attributes.getValue("class"));
		}
		
		// FIELDS :: FIELD :: <KEY> (START)
		else if (readFields) {
			currentFieldKey = qName;
		}
	}