have a custom abstract async task to be parent of all async tasks, remove duplicated codes