public ClassifierSetup(Element secondlevel) throws Exception {
		listOfLists = new ArrayList<List<String>>();
		List<List<String>> localListOfLists;
		List<String> list;
		KeyValue name;
		hasOptions = false;
		
		if(secondlevel.getAttributeList().size() != 1)
			throw new Exception("Classifier tag MUST contain name=\"\" only");
		if((name = secondlevel.getAttributeList().getKeyValue("name")) == null)
			throw new Exception("Classifier tag MUST contain name attribute");		
		
		
		classifierName = getClassifierPath(name.getValue().getValue().toString());
		if(classifierName == null)
			throw new Exception("Classifier " + name.getValue().getValue().toString() + " seems"
					+ "not to be a valid classifier name. Check spelling or if it exists in weka."
					+ "If it does exist it is not yet listed in this application.");
		// Populate listOfLists with name of classifier as starting point
		list = new ArrayList<>();
		listOfLists.add(list);
		
		// Check if it is a short notation i.e. using classifier without any options specified
		// In weka standard options are then used. If it is a short notation simply the classifier
		// name needs to be set. No additional instructions are necessary
		if(secondlevel.getEnd() instanceof Longend) {
			hasOptions = true;
			for(Element el : secondlevel.getEnd().getElements()) {
				// It is not allowed to specify an classifier within an classifier. A classifier can
				// only be a child node of an attribute
				if(el.getName().toString().equalsIgnoreCase("classifier")) {
					throw new Exception("Nested classifier is not allowed");
				}
				else if(el.getName().toString().equalsIgnoreCase("attribute")) {
					localListOfLists = new ArrayList<List<String>>();
					AttributeSetup attrSetup = new AttributeSetup(el); //Get the permuations of the attribute tag
					for(List<String> oldList : listOfLists) {			// Go trough all existing settings
						for(List<String> l : attrSetup.getListOfLists()) {
							list = new ArrayList<>();
							list.addAll(oldList);						// Add existing settings	
							list.addAll(l);								// Add new settings
							localListOfLists.add(list);
						}
					}
					// Change listOfLists. This step is necessary since Java does not allow to change
					// an element, if it is used in the foreach loop
					listOfLists = localListOfLists;
				}
				else {
					throw new Exception("Unknown EndType encountered while interpreting element " +
							el.getName().toString());
				}						
			}
		}
	}