revise the usage of dispatch queue