use only the executor service internal to SwingWorker everywhere
open products correctly regarding EDT/off EDT