customized background thread