private static Attribute s_parseAttribute(Element a, Program p) {
		//TODO:Move to some config file?
		if (a.tagName().equals("ffp-vert-attribute")) {
			String type = a.attr("type");
			DataType dataType = DataType.s_getType(type);
			if (dataType == null) return new FFPVertexAttribute(InputUsage.VERTEX_POSITION_3D);
			switch(dataType) {
			case VEC2: return new FFPVertexAttribute(InputUsage.VERTEX_POSITION_2D);
			case VEC3: return new FFPVertexAttribute(InputUsage.VERTEX_POSITION_3D);
			default: throw new IllegalArgumentException("Unrecognized dataType: " + dataType);
			}
		} else if (a.tagName().equals("ffp-texcoord-attribute")) {
			return new FFPTexCoordAttribute();
		} else if (!a.tagName().equals("attribute")) {
			throw new RuntimeException("Unknown attribute input type");
		}
		
		String name = a.attr("name");
		DataType type = DataType.s_getType(a.attr("type"));
		if (type == null) throw new RuntimeException("Could not find DataType: " + type);
		InputUsage usage = new InputUsage(a.attr("usage"), type, Attribute.class);
		Attribute attr = new Attribute(p, name);
		attr.setUsage(usage);
		return attr;
	}