main thread sync, multiple delegates instead of blocks