private void configure(URL xmlURL) throws IOException, SAXException {
		//Local Variables
		Document avTransportXML = descriptionTool.parseXML(xmlURL);		
		Node serviceStateTable = XMLTool.search(avTransportXML, "serviceStateTable");
		Node actionList = XMLTool.search(avTransportXML, "actionList");
		
		//Any state variable name that appears in the rendering control's XML document
		// is supported by that device.  A range is not necessary for all state variables
		// but is checked on the ones that require it.
		for (Node stateVariableNode = serviceStateTable.getFirstChild(); 
				stateVariableNode != null;
				stateVariableNode = stateVariableNode.getNextSibling()) {
			
			String name = XMLTool.search(stateVariableNode,"name").getTextContent();
			Node allowedValues = XMLTool.search(stateVariableNode, "allowedValueList");
			Node defaultValue = XMLTool.search(stateVariableNode, "defaultValue");

			if (name.equals(AVTStateVariableType.TRANSPORTSTATE.toString())) {
			    populateAllowedValues(supportedTransportStates, allowedValues, defaultValue);
			} else if (name.equals(AVTStateVariableType.TRANSPORTPLAYSPEED.toString())) {
			    populateAllowedValues(supportedPlaySpeeds, allowedValues, defaultValue);
			} else if (name.equals(AVTStateVariableType.SEEKMODE.toString())) {
			    populateAllowedValues(supportedSeekModes, allowedValues, defaultValue);
			} else if (name.equals(AVTStateVariableType.CURRENTPLAYMODE.toString())) {
			    populateAllowedValues(supportedPlayModes, allowedValues, defaultValue);
			}
		}
		
		//Add actions described in the action list
		for (Node actionNode = actionList.getFirstChild();
				actionNode != null;
				actionNode = actionNode.getNextSibling()) {			
			actions.add(XMLTool.search(actionNode, "name").getTextContent());
		}
	}