@RequestMapping(method = RequestMethod.GET)
    public String generalTree(ModelMap map) {
        if (Feat.getFeats().isEmpty()) {
            Feat.loadFromSQL();
        }
        ArrayList<FeatNode> nodes = new ArrayList<FeatNode>();
        int count = 0;
        if (FeatNode.getNodes().isEmpty()) {            
            for (Feat f : Feat.getFeats().values()) {
                if (f.getRequiredFeats().isEmpty()) {
                    System.out.println("Making node for " + f.getName());
                    if (!FeatNode.getContainedFeats().contains(f.getId())) {
                        nodes.add(new FeatNode(f.getId()));
                        count++;
                    }
                    
                }
            }
        } else {
            nodes.addAll(FeatNode.getNodes().values());
        }
        System.out.println(count + " == " + nodes.size() + " == " + FeatNode.getNodes().values().size());
        for (int i = 0; i < nodes.size(); i++) {
            if (!nodes.get(i).getParents().isEmpty()) {
                System.out.println(Feat.getFeats().get(nodes.get(i).getFeat()).getName());
                nodes.remove(i);
            }
        }
        System.out.println(nodes.size());
        map.addAttribute("nodeArr", nodes);
        return "tree";
    }