added completion callback blocks