refactor: abstract async, activity, fragment