public static void main(String[] args) throws Exception {
        List<SeperatorDefinition> seps = new ArrayList<SeperatorDefinition>();
        
        buildCoreSet(Release.ReturnToRavnica, seps);
        buildBasicSet(Release.Magic2013, seps);
        buildBasicMultiColor(Release.Magic2013, seps);
        buildBasicSet(Release.AvacynRestored, seps);
        buildBasicMultiColor(Release.AvacynRestored, seps);
        
        for(MagicColor c: MagicColor.values())
            if (c.isBaseColor())
                buildSpecialSeperator(seps, Arrays.asList(c), Arrays.asList("Basic Land"));
        
        
        for(MagicColor c: Arrays.asList(
                MagicColor.BlackGreen,
                MagicColor.BlackRed,
                MagicColor.BlueRed,
                MagicColor.GreenWhite,
                MagicColor.WhiteBlue
                ))
            buildSpecialSeperator(Release.ReturnToRavnica, seps, c);
        
        buildSpecialSeperator(seps, Arrays.asList(MagicColor.Colorless), 
                Arrays.asList(SymbolFactory.getIcon(Release.Gatecrash, Rarity.Common)));
        buildSpecialSeperator(seps, Arrays.asList(MagicColor.Colorless), 
                Arrays.asList(SymbolFactory.getIcon(Release.Gatecrash, Rarity.Uncommon)));
        buildSpecialSeperator(seps, Arrays.asList(MagicColor.Colorless), 
                Arrays.asList(SymbolFactory.getIcon(Release.Gatecrash, Rarity.Rare), SymbolFactory.getIcon(Release.Gatecrash, Rarity.Mystic)));
        
        buildSpecialSeperator(seps, Arrays.asList("Unsorted"), 
                Arrays.asList("Misc"));
        
        Paper paper = new Paper();
        paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());
        PageFormat format = new PageFormat();
        format.setPaper(paper);
        
        Book pages = new Book();
        pages.append(new MagicPaperPrintable(seps), format, (int)Math.ceil(seps.size() / 6d));
        
        
        
        PrinterJob job = PrinterJob.getPrinterJob();
        job.setPageable(pages);
        if (!job.printDialog())
            return;
        
        job.print();
        
        

    }