Crawler (selber) schreiben, Aufteilung der Klassen

Hallo,
achtung, wieder ein Thema von mir, damit sich andere nicht gestört fühlen, in/innerhalb der Spielwiese, bitte dort lassen,

[edit SlaterB: lass solche Sondertouren, Themen dorthin wo sie hingehören,
du bist zwar ein gewisser Sonderfall, aber auf jeden Fall nicht mit Sonderrechten]

ich wollte einen Crawler, der Seiten besucht, selber schreiben,

und dazu ein paar Fragen,
wie sollte man die Klassen aufteilen? In der main wird CrawlerHandle und CrawlerThread (eigentlich Runnable) angelegt, wie man sieht, CrawlerThread besucht eine Seite und gibt das Ergebnis an CrawlerHandle, der wiederum einen CrawlerThread mit sich selber beginnen kann, in der main steht nur,

        HashMap<String, Integer> seiten = new HashMap<String, Integer>();
        es.execute(new CrawlerThread(new CrawlerHandle(es, seiten), "http://www.spiegel.de/"));
        Thread.sleep(5000);
        es.shutdown();
        es.awaitTermination(2, TimeUnit.MINUTES);
        System.out.println("");```
dann sollte man in die Map nur Domains putten oder absolute URLs (also auch Verzeichnisse), welche Seiten einer Domain sollten besucht werden?