diff --git a/test/include/multipart_test.cpp b/test/include/multipart_test.cpp
index 38ac53d..0ac201f 100644
--- a/test/include/multipart_test.cpp
+++ b/test/include/multipart_test.cpp
@@ -3,7 +3,6 @@
 
 #include <boost/beast/http/fields.hpp>
 #include <boost/beast/http/message.hpp>
-#include <boost/beast/http/string_body.hpp>
 
 #include <memory>
 #include <string_view>
@@ -26,29 +25,30 @@
 class MultipartTest : public Test
 {
   public:
-    boost::beast::http::request<boost::beast::http::string_body> req{};
     MultipartParser parser;
     std::error_code ec;
 };
 
 TEST_F(MultipartTest, TestGoodMultipartParser)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+        "111111111111111111111111112222222222222222222222222222222\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+        "{\r\n-----------------------------d74496d66958873e123456\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test3\"\r\n\r\n"
+        "{\r\n--------d74496d6695887}\r\n"
+        "-----------------------------d74496d66958873e--\r\n";
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
-                 "111111111111111111111111112222222222222222222222222222222\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
-                 "{\r\n-----------------------------d74496d66958873e123456\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test3\"\r\n\r\n"
-                 "{\r\n--------d74496d6695887}\r\n"
-                 "-----------------------------d74496d66958873e--\r\n";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
+
     ParserError rc = parser.parse(reqIn);
     ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
 
@@ -72,16 +72,18 @@
 
 TEST_F(MultipartTest, TestBadMultipartParser1)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+        "1234567890\r\n"
+        "-----------------------------d74496d66958873e\r-\r\n";
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
-                 "1234567890\r\n"
-                 "-----------------------------d74496d66958873e\r-\r\n";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
+
     ParserError rc = parser.parse(reqIn);
 
     EXPECT_EQ(rc, ParserError::ERROR_UNEXPECTED_END_OF_INPUT);
@@ -89,16 +91,17 @@
 
 TEST_F(MultipartTest, TestBadMultipartParser2)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+        "abcd\r\n"
+        "-----------------------------d74496d66958873e-\r\n";
+    crow::Request reqIn(body, ec);
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
-                 "abcd\r\n"
-                 "-----------------------------d74496d66958873e-\r\n";
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
 
-    crow::Request reqIn(req, ec);
     ParserError rc = parser.parse(reqIn);
 
     EXPECT_EQ(rc, ParserError::ERROR_UNEXPECTED_END_OF_INPUT);
@@ -106,162 +109,176 @@
 
 TEST_F(MultipartTest, TestErrorBoundaryFormat)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary+=-----------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+        "{\"Key1\": 11223333333333333333333333333333333333333333}\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+        "123456\r\n"
+        "-----------------------------d74496d66958873e--\r\n";
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
-                 "{\"Key1\": 11223333333333333333333333333333333333333333}\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
-                 "123456\r\n"
-                 "-----------------------------d74496d66958873e--\r\n";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary+=-----------------------------d74496d66958873e");
+
     EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_BOUNDARY_FORMAT);
 }
 
 TEST_F(MultipartTest, TestErrorBoundaryCR)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r"
+        "{\"Key1\": 112233}\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+        "123456\r\n"
+        "-----------------------------d74496d66958873e--\r\n";
+    crow::Request reqIn(body, ec);
 
-    req.body() = "-----------------------------d74496d66958873e"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r"
-                 "{\"Key1\": 112233}\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
-                 "123456\r\n"
-                 "-----------------------------d74496d66958873e--\r\n";
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
 
-    crow::Request reqIn(req, ec);
     EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_BOUNDARY_CR);
 }
 
 TEST_F(MultipartTest, TestErrorBoundaryLF)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+        "{\"Key1\": 112233}\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+        "123456\r\n"
+        "-----------------------------d74496d66958873e--\r\n";
 
-    req.body() = "-----------------------------d74496d66958873e\r"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
-                 "{\"Key1\": 112233}\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
-                 "123456\r\n"
-                 "-----------------------------d74496d66958873e--\r\n";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
+
     EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_BOUNDARY_LF);
 }
 
 TEST_F(MultipartTest, TestErrorBoundaryData)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d7449sd6d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+        "{\"Key1\": 112233}\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+        "123456\r\n"
+        "-----------------------------d74496d66958873e--\r\n";
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
-                 "{\"Key1\": 112233}\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
-                 "123456\r\n"
-                 "-----------------------------d74496d66958873e--\r\n";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d7449sd6d66958873e");
+
     EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_BOUNDARY_DATA);
 }
 
 TEST_F(MultipartTest, TestErrorEmptyHeader)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r\n"
+        ": form-data; name=\"Test1\"\r\n"
+        "{\"Key1\": 112233}\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n"
+        "123456\r\n"
+        "-----------------------------d74496d66958873e--\r\n";
+    crow::Request reqIn(body, ec);
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 ": form-data; name=\"Test1\"\r\n"
-                 "{\"Key1\": 112233}\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n"
-                 "123456\r\n"
-                 "-----------------------------d74496d66958873e--\r\n";
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
 
-    crow::Request reqIn(req, ec);
     EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_EMPTY_HEADER);
 }
 
 TEST_F(MultipartTest, TestErrorHeaderName)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-!!Disposition: form-data; name=\"Test1\"\r\n"
+        "{\"Key1\": 112233}\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+        "123456\r\n"
+        "-----------------------------d74496d66958873e--\r\n";
+    crow::Request reqIn(body, ec);
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "Content-!!Disposition: form-data; name=\"Test1\"\r\n"
-                 "{\"Key1\": 112233}\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
-                 "123456\r\n"
-                 "-----------------------------d74496d66958873e--\r\n";
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
 
-    crow::Request reqIn(req, ec);
     EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_HEADER_NAME);
 }
 
 TEST_F(MultipartTest, TestErrorHeaderValue)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test1\"\r"
+        "{\"Key1\": 112233}\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+        "123456\r\n"
+        "-----------------------------d74496d66958873e--\r\n";
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r"
-                 "{\"Key1\": 112233}\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
-                 "123456\r\n"
-                 "-----------------------------d74496d66958873e--\r\n";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
+
     EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_HEADER_VALUE);
 }
 
 TEST_F(MultipartTest, TestErrorHeaderEnding)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body =
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r"
+        "{\"Key1\": 112233}\r\n"
+        "-----------------------------d74496d66958873e\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+        "123456\r\n"
+        "-----------------------------d74496d66958873e--\r\n";
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r"
-                 "{\"Key1\": 112233}\r\n"
-                 "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
-                 "123456\r\n"
-                 "-----------------------------d74496d66958873e--\r\n";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
+
     EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_HEADER_ENDING);
 }
 
 TEST_F(MultipartTest, TestGoodMultipartParserMultipleHeaders)
 {
-    req.set("Content-Type",
-            "multipart/form-data; "
-            "boundary=---------------------------d74496d66958873e");
+    std::string_view body = "-----------------------------d74496d66958873e\r\n"
+                            "Content-Disposition: form-data; name=\"Test1\"\r\n"
+                            "Other-Header: value=\"v1\"\r\n"
+                            "\r\n"
+                            "Data1\r\n"
+                            "-----------------------------d74496d66958873e--";
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n"
-                 "Other-Header: value=\"v1\"\r\n"
-                 "\r\n"
-                 "Data1\r\n"
-                 "-----------------------------d74496d66958873e--";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type",
+                    "multipart/form-data; "
+                    "boundary=---------------------------d74496d66958873e");
+
     ParserError rc = parser.parse(reqIn);
     ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
 
@@ -277,32 +294,32 @@
 
 TEST_F(MultipartTest, TestErrorHeaderWithoutColon)
 {
-    req.set("Content-Type", "multipart/form-data; "
-                            "boundary=--end");
+    std::string_view body = "----end\r\n"
+                            "abc\r\n"
+                            "\r\n"
+                            "Data1\r\n"
+                            "----end--\r\n";
+    crow::Request reqIn(body, ec);
 
-    req.body() = "----end\r\n"
-                 "abc\r\n"
-                 "\r\n"
-                 "Data1\r\n"
-                 "----end--\r\n";
+    reqIn.addHeader("Content-Type", "multipart/form-data; "
+                                    "boundary=--end");
 
-    crow::Request reqIn(req, ec);
     EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_UNEXPECTED_END_OF_HEADER);
 }
 
 TEST_F(MultipartTest, TestUnknownHeaderIsCorrectlyParsed)
 {
-    req.set("Content-Type", "multipart/form-data; "
-                            "boundary=--end");
-
-    req.body() =
+    std::string_view body =
         "----end\r\n"
         "t-DiPpcccc:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaa\r\n"
         "\r\n"
         "Data1\r\n"
         "----end--\r\n";
 
-    crow::Request reqIn(req, ec);
+    crow::Request reqIn(body, ec);
+
+    reqIn.addHeader("Content-Type", "multipart/form-data; "
+                                    "boundary=--end");
     ParserError rc = parser.parse(reqIn);
 
     ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
@@ -318,17 +335,18 @@
 
 TEST_F(MultipartTest, TestErrorMissingSeparatorBetweenMimeFieldsAndData)
 {
-    req.set(
-        "Content-Type",
-        "multipart/form-data; boundary=---------------------------d74496d66958873e");
-
-    req.body() =
+    std::string_view body =
         "-----------------------------d74496d66958873e\r\n"
         "t-DiPpcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaa\r\n"
         "Data1"
         "-----------------------------d74496d66958873e--";
 
-    crow::Request reqIn(req, ec);
+    crow::Request reqIn(body, ec);
+
+    reqIn.addHeader(
+        "Content-Type",
+        "multipart/form-data; boundary=---------------------------d74496d66958873e");
+
     ParserError rc = parser.parse(reqIn);
 
     EXPECT_EQ(rc, ParserError::ERROR_UNEXPECTED_END_OF_HEADER);
@@ -336,16 +354,17 @@
 
 TEST_F(MultipartTest, TestDataWithoutMimeFields)
 {
-    req.set(
+    std::string_view body = "-----------------------------d74496d66958873e\r\n"
+                            "\r\n"
+                            "Data1\r\n"
+                            "-----------------------------d74496d66958873e--";
+
+    crow::Request reqIn(body, ec);
+
+    reqIn.addHeader(
         "Content-Type",
         "multipart/form-data; boundary=---------------------------d74496d66958873e");
 
-    req.body() = "-----------------------------d74496d66958873e\r\n"
-                 "\r\n"
-                 "Data1\r\n"
-                 "-----------------------------d74496d66958873e--";
-
-    crow::Request reqIn(req, ec);
     ParserError rc = parser.parse(reqIn);
 
     ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
@@ -362,15 +381,16 @@
 
 TEST_F(MultipartTest, TestErrorMissingFinalBoundry)
 {
-    req.set("Content-Type", "multipart/form-data; boundary=--XX");
-
-    req.body() =
+    std::string_view body =
         "----XX\r\n"
         "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
         "t-DiPpccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccAAAAAAAAAAAAAAABCDz\r\n"
         "\335\r\n\r\n";
 
-    crow::Request reqIn(req, ec);
+    crow::Request reqIn(body, ec);
+
+    reqIn.addHeader("Content-Type", "multipart/form-data; boundary=--XX");
+
     ParserError rc = parser.parse(reqIn);
 
     EXPECT_EQ(rc, ParserError::ERROR_UNEXPECTED_END_OF_INPUT);
@@ -378,17 +398,19 @@
 
 TEST_F(MultipartTest, TestIgnoreDataAfterFinalBoundary)
 {
-    req.set("Content-Type", "multipart/form-data; boundary=--XX");
+    std::string_view body =
+        "----XX\r\n"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+        "Data1\r\n"
+        "----XX--\r\n"
+        "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+        "Data2\r\n"
+        "----XX--\r\n";
 
-    req.body() = "----XX\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
-                 "Data1\r\n"
-                 "----XX--\r\n"
-                 "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
-                 "Data2\r\n"
-                 "----XX--\r\n";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type", "multipart/form-data; boundary=--XX");
+
     ParserError rc = parser.parse(reqIn);
 
     ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
@@ -403,16 +425,18 @@
 
 TEST_F(MultipartTest, TestFinalBoundaryIsCorrectlyRecognized)
 {
-    req.set("Content-Type", "multipart/form-data; boundary=--XX");
+    std::string_view body =
+        "----XX\r\n"
+        "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+        "Data1\r\n"
+        "----XX-abc-\r\n"
+        "StillData1\r\n"
+        "----XX--\r\n";
 
-    req.body() = "----XX\r\n"
-                 "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
-                 "Data1\r\n"
-                 "----XX-abc-\r\n"
-                 "StillData1\r\n"
-                 "----XX--\r\n";
+    crow::Request reqIn(body, ec);
 
-    crow::Request reqIn(req, ec);
+    reqIn.addHeader("Content-Type", "multipart/form-data; boundary=--XX");
+
     ParserError rc = parser.parse(reqIn);
 
     ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
