shared_buffer now use std::shared_ptr only