replace and necessary performBlockAndWait with performBlock