private void parseData(MarcRecord record) {
        // Parse control entries
        List<MarcTag> controlTags = record.getAllTagsInRange(10, 99);
        controlNumbers = new ControlNumbers(controlTags);
        
        // Parse title entries
        MarcTag tag245 = record.getTag(245, 1);
        if(tag245 != null) {
            titleElement = new TitleElement(tag245);
        }
        // Parse name entries
        List<MarcTag> mainEntryTags = record.getAllTags(new int[]{100, 110, 111, 130});
        for(MarcTag mainEntry : mainEntryTags) {
            MainEntryElement mee = new MainEntryElement(mainEntry);
            if(mee.isValid()) {
                mainEntries.add(mee);
            }
        }
        
        // Parse publication info
        List<MarcTag> pubTags = new ArrayList<MarcTag>();
        if(MarcWorxRecordHelper.doesRecordConformToRda(record)) {
            pubTags.addAll(record.getAllTags(new int[]{264, 8, 260}));
        } else {
            pubTags.addAll(record.getAllTags(new int[]{8, 260}));
        }
        pubInfo = new PublicationInformation(pubTags);
        
        // Parse target audience
        for(MarcTag tag521 : record.getAllTags(521)) {
            TargetAudienceNote note = new TargetAudienceNote(tag521);
            if(note.isValid()) {
                targetAudience.add(note);
            }
        }
        // Parse reading programs
        for(MarcTag tag526 : record.getAllTags(526)) {
            StudyProgramNote spn = new StudyProgramNote(tag526);
            if(spn.isValid()) {
                studyPrograms.add(spn);
            }
        }
        
    }