using a custom operation queue instead of the main operation queue