added non-blocking UI code framework