more auto_ptr usage to avoid bare geometry pointers