do everything in background as much as possible