perform conversion in background thread