Added strongify(self) and weakify(self) to make sure references are not caught in retain cycles.