public static CustomButton makeTextExplorerLauchButton(
			final String buttonTitle) {
		final CustomButton a = new CustomButton(buttonTitle);

		a.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				if (!Database.loaded)
					return;
				JFrame jf = new JFrame(buttonTitle);
				jf.setSize(900, 500);
				jf.setVisible(true);
				jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
				JTextArea wordStat = new JTextArea();
				JScrollPane compareTickers = JComponentFactory
						.makeTextScroll(wordStat);
				jf.add(compareTickers);

				showFullSetWithDescriptions();
				TreeMap<Integer, ArrayList<String>> orderResults = new TreeMap<Integer, ArrayList<String>>();

				for (Entry<String, Integer> ent : Database.WORD_STATS
						.entrySet()) {
					String word = ent.getKey();
					Integer count = ent.getValue();
					if (orderResults.containsKey(count)) {
						orderResults.get(count).add(word);
					} else {
						ArrayList<String> startArray = new ArrayList<String>();
						startArray.add(word);
						orderResults.put(count, startArray);
					}
				}
				for (Entry<Integer, ArrayList<String>> ent : orderResults
						.entrySet()) {
					wordStat.append("\n\n" + ent.getKey() + "\n"
							+ ent.getValue());

				}
				ArrayList<Float> avgs = new ArrayList<Float>();
				ArrayList<Float> totals = new ArrayList<Float>();
				for (String txt : Database.DESCRIPTIONS.values()) {
					txt = txt.replaceAll("_", " ");
					totals.add(calculateWordRankTotal(txt));
					avgs.add(calculateWordRankAverage(txt));
				}
				StatInfo totalStats = new StatInfo(totals);
				StatInfo avgsStats = new StatInfo(avgs);
			}

			private void showFullSetWithDescriptions() {
				JFrame jf = new JFrame(buttonTitle);
				jf.setSize(900, 500);
				jf.setVisible(true);
				jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
				JTextArea descriptions = new JTextArea();
				JScrollPane compareTickers = JComponentFactory
						.makeTextScroll(descriptions);
				jf.add(compareTickers);

				for (String ticker : Database.dbSet) {
					descriptions.append("\n" + ticker + "               "
							+ Database.DESCRIPTIONS.get(ticker));
				}
			}

			private float calculateWordRankTotal(String text) {
				float rank = 0;
				String[] words = Database.simplifyText(text).split(" ");
				for (String word : words) {

					rank += 1.0 / Database.WORD_STATS.get(word);
				}
				return rank;
			}

			private float calculateWordRankAverage(String text) {
				float rank = 0;
				String[] words = Database.simplifyText(text).split(" ");
				for (String word : words) {

					rank += 1.0 / Database.WORD_STATS.get(word);
				}
				return rank / words.length;
			}
		}

		);

		return a;
	}