Use boost::shared_ptr<Surface> instead of std::auto_ptr<Surface>