private DrawableTree phyloXMLToTree(org.w3c.dom.Document doc) throws FileParseException {
		Node documentRoot = doc.getDocumentElement();
		Node child = documentRoot.getFirstChild();
		
		DrawableNode root = null;
		
		//Search for (the first) phylogeny element
		while(child != null) {
			if (child.getNodeType() == Node.ELEMENT_NODE && child.getNodeName().equalsIgnoreCase(XML_PHYLOGENY))
				break;
			
			child = child.getNextSibling();
		}
		 
	
		//Child should now be 'pointing' at phylogeny element, so search within it for the first clade element
		if (child == null) {
			throw new FileParseException("No phylogeny tag found in XML, cannot create tree");
		}
		
		Node grandChild = child.getFirstChild();

		while(grandChild != null) {	
			if (grandChild.getNodeType() == Node.ELEMENT_NODE && grandChild.getNodeName().equalsIgnoreCase(XML_CLADE)) {
				root = new DrawableNode();
				recurseAddNodes( root, grandChild );
				break;
			}

			grandChild = grandChild.getNextSibling();
		}

		if (root == null) {
			throw new FileParseException("No clades found in XML, cannot create tree");
		}

		//TODO add support for multiple trees 
		
		DrawableTree tree = new SquareTree(root);
		convertDatesToBranchLengths(tree);
		return tree;
	}