added dealloc to remove observer