change perform_async