changed __block to __weak, in ARC __block doesn't prevent retain cycles with self