public DrawableNode findCommonAncestor(ArrayList<DrawableNode> sample) {
		if (sample.size()==0) //shouldn't happen, but just in case
			return null;
		
		DrawableNode newroot = (DrawableNode)root;
		
		ArrayList<Node> containsSample = new ArrayList<Node>();
		for(Node kid : newroot.getOffspring()) {
			if (subtreeContainsNodes( (DrawableNode)kid, sample))
				containsSample.add(kid);
		}
		
		while(containsSample.size()==1) {
			newroot = (DrawableNode)containsSample.get(0);
			containsSample.clear();
			for(Node kid : newroot.getOffspring()) {
				if (subtreeContainsNodes( (DrawableNode)kid, sample))
					containsSample.add(kid);
			}
			
		}
		
		if (containsSample.size()==0) //This should never happen either
			return null;
		
		if (containsSample.size()>1) {
			System.out.println("Found common ancestor : " + newroot.getLabel());
			return newroot;
		}
		
		//We should never get here
		System.out.println("Error in finding common ancestor, returning null node");
		return null;
	}