OPT: use lunchbox::Buffer in place of std::vector