private Entry parseEntry(Element rootEntryElement) {
        Entry rEntry = new Entry();
        rEntry.setDate(rootEntryElement.getAttribute("date"));
        NodeList entryNodes = rootEntryElement.getChildNodes();
        
        for (int i = 0; i < entryNodes.getLength(); i++) {
            // Changing all children to child by child basis
            Node entryNode = entryNodes.item(i);
        
            if (entryNode.getNodeType() == Node.ELEMENT_NODE) {
                Element entryElement = (Element) entryNode;
            
                switch (entryElement.getNodeName()) {
                    case "scripture":
                        rEntry.addScripture(parseScripture(entryElement));
                        break;
                    case "topic":
                        String tempTopic = entryElement.getTextContent();
                                                
                        //BEGIN TOPIC CONVERTER
                        for (Map.Entry<String, List<String>> topic : termsToFind.entrySet()) {
                           String masterTopic = topic.getKey();
                            List<String> slaveTopic = topic.getValue();
                            
                            if (slaveTopic.contains(tempTopic.toLowerCase())) {                                
                                rEntry.addTopic(masterTopic);
                           }
                        }                   
                        //END TOPIC CONVERTER                        
                        break;
                    case "content":
                        rEntry.setContent(entryElement.getTextContent().trim().replaceAll("\\n\\s+", "\n"));
                        break;
                }
            }
        }
        return rEntry;
    }