public static void main(String[] args) throws Exception {
		
		// INIT
		EnsambleParser<GoCategory> parser = new EnsambleParser<GoCategory>(GoCategory.class);
		EnsambleGenes<GoCategory> categories = 
				parser.parseFile(GENOME, new EnsambleGeneNameFilter<GoCategory>(GENES), MERGIN);
		
		initHandlers(categories);
		
		// Read
		for (List<BedAlignmentHandler> handlerList : handlers.values()) {
			for (BedAlignmentHandler handler : handlerList) {
				handler.startFile(INPUT_FILE);
			}
		}
		
		BufferedReader br = new BufferedReader(new FileReader(new File(INPUT_FILE)));
		String line;
		boolean firstline = true;
		while ((line = br.readLine()) != null) {
			if(firstline) {
				firstline = false;
				continue;
			}
			
		   	BedLine bl = new BedLine(line);
		   	handlerRead(categories, bl);
		}
		
		for (List<BedAlignmentHandler> handlerList : handlers.values()) {
			for (BedAlignmentHandler handler : handlerList) {
				handler.doneFile(INPUT_FILE);
			}
		}
		br.close();
		
		
		JFrame mainComponent = new JFrame();
		mainComponent.setTitle("RNA Playground");
		mainComponent.setBounds(100, 100, 800, 500);
		mainComponent.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JTabbedPane tabbedPane = new JTabbedPane();
		for (Entry<String, List<BedAlignmentHandler>> handlerList : handlers.entrySet()) {
			for (BedAlignmentHandler handler : handlerList.getValue()) {
				for (Component comp : handler.done()) {
					tabbedPane.addTab(handlerList.getKey(), comp);
				}
			}
		}
		mainComponent.setContentPane(tabbedPane);
		mainComponent.setVisible(true);
		
	}