print in background thread