read engines on background thread, plus some housekeeping