refactor to use IntentService