Note this requires test-based piecing together of the preamble string, so it changed to being a std::string to make it easier to do. This closes issue #254.