added swingworker for non UI work