added completion blocks