added completion blocks around
made it working!
cleaned up
fixed cpu usage. ready to merge