switched to shared_ptr instead of boost::object_pool