init LiteralNode with string view, code cleaning
diff --git a/include/inja/environment.hpp b/include/inja/environment.hpp
index e102046..9e6f7c4 100644
--- a/include/inja/environment.hpp
+++ b/include/inja/environment.hpp
@@ -34,13 +34,13 @@
 public:
   Environment() : Environment("") {}
 
-  explicit Environment(const std::string &global_path) : input_path(global_path), output_path(global_path) {}
+  explicit Environment(const std::string& global_path) : input_path(global_path), output_path(global_path) {}
 
-  Environment(const std::string &input_path, const std::string &output_path)
+  Environment(const std::string& input_path, const std::string& output_path)
       : input_path(input_path), output_path(output_path) {}
 
   /// Sets the opener and closer for template statements
-  void set_statement(const std::string &open, const std::string &close) {
+  void set_statement(const std::string& open, const std::string& close) {
     lexer_config.statement_open = open;
     lexer_config.statement_open_no_lstrip = open + "+";
     lexer_config.statement_open_force_lstrip = open + "-";
@@ -50,13 +50,13 @@
   }
 
   /// Sets the opener for template line statements
-  void set_line_statement(const std::string &open) {
+  void set_line_statement(const std::string& open) {
     lexer_config.line_statement = open;
     lexer_config.update_open_chars();
   }
 
   /// Sets the opener and closer for template expressions
-  void set_expression(const std::string &open, const std::string &close) {
+  void set_expression(const std::string& open, const std::string& close) {
     lexer_config.expression_open = open;
     lexer_config.expression_open_force_lstrip = open + "-";
     lexer_config.expression_close = close;
@@ -65,7 +65,7 @@
   }
 
   /// Sets the opener and closer for template comments
-  void set_comment(const std::string &open, const std::string &close) {
+  void set_comment(const std::string& open, const std::string& close) {
     lexer_config.comment_open = open;
     lexer_config.comment_open_force_lstrip = open + "-";
     lexer_config.comment_close = close;
@@ -98,68 +98,68 @@
     return parser.parse(input);
   }
 
-  Template parse_template(const std::string &filename) {
+  Template parse_template(const std::string& filename) {
     Parser parser(parser_config, lexer_config, template_storage, function_storage);
     auto result = Template(parser.load_file(input_path + static_cast<std::string>(filename)));
     parser.parse_into_template(result, input_path + static_cast<std::string>(filename));
     return result;
   }
 
-  Template parse_file(const std::string &filename) {
+  Template parse_file(const std::string& filename) {
     return parse_template(filename);
   }
 
-  std::string render(std::string_view input, const json &data) { return render(parse(input), data); }
+  std::string render(std::string_view input, const json& data) { return render(parse(input), data); }
 
-  std::string render(const Template &tmpl, const json &data) {
+  std::string render(const Template& tmpl, const json& data) {
     std::stringstream os;
     render_to(os, tmpl, data);
     return os.str();
   }
 
-  std::string render_file(const std::string &filename, const json &data) {
+  std::string render_file(const std::string& filename, const json& data) {
     return render(parse_template(filename), data);
   }
 
-  std::string render_file_with_json_file(const std::string &filename, const std::string &filename_data) {
+  std::string render_file_with_json_file(const std::string& filename, const std::string& filename_data) {
     const json data = load_json(filename_data);
     return render_file(filename, data);
   }
 
-  void write(const std::string &filename, const json &data, const std::string &filename_out) {
+  void write(const std::string& filename, const json& data, const std::string& filename_out) {
     std::ofstream file(output_path + filename_out);
     file << render_file(filename, data);
     file.close();
   }
 
-  void write(const Template &temp, const json &data, const std::string &filename_out) {
+  void write(const Template& temp, const json& data, const std::string& filename_out) {
     std::ofstream file(output_path + filename_out);
     file << render(temp, data);
     file.close();
   }
 
-  void write_with_json_file(const std::string &filename, const std::string &filename_data,
-                            const std::string &filename_out) {
+  void write_with_json_file(const std::string& filename, const std::string& filename_data,
+                            const std::string& filename_out) {
     const json data = load_json(filename_data);
     write(filename, data, filename_out);
   }
 
-  void write_with_json_file(const Template &temp, const std::string &filename_data, const std::string &filename_out) {
+  void write_with_json_file(const Template& temp, const std::string& filename_data, const std::string& filename_out) {
     const json data = load_json(filename_data);
     write(temp, data, filename_out);
   }
 
-  std::ostream &render_to(std::ostream &os, const Template &tmpl, const json &data) {
+  std::ostream& render_to(std::ostream& os, const Template& tmpl, const json& data) {
     Renderer(render_config, template_storage, function_storage).render_to(os, tmpl, data);
     return os;
   }
 
-  std::string load_file(const std::string &filename) {
+  std::string load_file(const std::string& filename) {
     Parser parser(parser_config, lexer_config, template_storage, function_storage);
     return parser.load_file(input_path + filename);
   }
 
-  json load_json(const std::string &filename) {
+  json load_json(const std::string& filename) {
     std::ifstream file;
     file.open(input_path + filename);
     if (file.fail()) {
@@ -173,28 +173,28 @@
   /*!
   @brief Adds a variadic callback
   */
-  void add_callback(const std::string &name, const CallbackFunction &callback) {
+  void add_callback(const std::string& name, const CallbackFunction& callback) {
     add_callback(name, -1, callback);
   }
 
   /*!
   @brief Adds a variadic void callback
   */
-  void add_void_callback(const std::string &name, const VoidCallbackFunction &callback) {
+  void add_void_callback(const std::string& name, const VoidCallbackFunction& callback) {
     add_void_callback(name, -1, callback);
   }
 
   /*!
   @brief Adds a callback with given number or arguments
   */
-  void add_callback(const std::string &name, int num_args, const CallbackFunction &callback) {
+  void add_callback(const std::string& name, int num_args, const CallbackFunction& callback) {
     function_storage.add_callback(name, num_args, callback);
   }
 
   /*!
   @brief Adds a void callback with given number or arguments
   */
-  void add_void_callback(const std::string &name, int num_args, const VoidCallbackFunction &callback) {
+  void add_void_callback(const std::string& name, int num_args, const VoidCallbackFunction& callback) {
     function_storage.add_callback(name, num_args, [callback](Arguments& args) { callback(args); return json(); });
   }
 
@@ -202,7 +202,7 @@
    * Then, a template can be rendered in another template using the
    * include "<name>" syntax.
    */
-  void include_template(const std::string &name, const Template &tmpl) {
+  void include_template(const std::string& name, const Template& tmpl) {
     template_storage[name] = tmpl;
   }
 
@@ -217,14 +217,14 @@
 /*!
 @brief render with default settings to a string
 */
-inline std::string render(std::string_view input, const json &data) {
+inline std::string render(std::string_view input, const json& data) {
   return Environment().render(input, data);
 }
 
 /*!
 @brief render with default settings to the given output stream
 */
-inline void render_to(std::ostream &os, std::string_view input, const json &data) {
+inline void render_to(std::ostream& os, std::string_view input, const json& data) {
   Environment env;
   env.render_to(os, env.parse(input), data);
 }
diff --git a/include/inja/function_storage.hpp b/include/inja/function_storage.hpp
index 90c3955..1a6641f 100644
--- a/include/inja/function_storage.hpp
+++ b/include/inja/function_storage.hpp
@@ -7,9 +7,9 @@
 
 namespace inja {
 
-using Arguments = std::vector<const json *>;
-using CallbackFunction = std::function<json(Arguments &args)>;
-using VoidCallbackFunction = std::function<void(Arguments &args)>;
+using Arguments = std::vector<const json*>;
+using CallbackFunction = std::function<json(Arguments& args)>;
+using VoidCallbackFunction = std::function<void(Arguments& args)>;
 
 /*!
  * \brief Class for builtin functions and user-defined callbacks.
@@ -69,7 +69,7 @@
   };
 
   struct FunctionData {
-    explicit FunctionData(const Operation &op, const CallbackFunction &cb = CallbackFunction{}) : operation(op), callback(cb) {}
+    explicit FunctionData(const Operation& op, const CallbackFunction& cb = CallbackFunction{}) : operation(op), callback(cb) {}
     const Operation operation;
     const CallbackFunction callback;
   };
@@ -114,7 +114,7 @@
     function_storage.emplace(std::make_pair(static_cast<std::string>(name), num_args), FunctionData { op });
   }
 
-  void add_callback(std::string_view name, int num_args, const CallbackFunction &callback) {
+  void add_callback(std::string_view name, int num_args, const CallbackFunction& callback) {
     function_storage.emplace(std::make_pair(static_cast<std::string>(name), num_args), FunctionData { Operation::Callback, callback });
   }
 
diff --git a/include/inja/lexer.hpp b/include/inja/lexer.hpp
index 7bcbf56..5f45da1 100644
--- a/include/inja/lexer.hpp
+++ b/include/inja/lexer.hpp
@@ -35,7 +35,7 @@
     Number,
   };
 
-  const LexerConfig &config;
+  const LexerConfig& config;
 
   State state;
   MinusState minus_state;
@@ -270,7 +270,7 @@
   }
 
 public:
-  explicit Lexer(const LexerConfig &config) : config(config), state(State::Text), minus_state(MinusState::Number) {}
+  explicit Lexer(const LexerConfig& config) : config(config), state(State::Text), minus_state(MinusState::Number) {}
 
   SourceLocation current_position() const {
     return get_source_location(m_in, tok_start);
@@ -424,7 +424,7 @@
     }
   }
 
-  const LexerConfig &get_config() const {
+  const LexerConfig& get_config() const {
     return config;
   }
 };
diff --git a/include/inja/node.hpp b/include/inja/node.hpp
index da77065..2df0054 100644
--- a/include/inja/node.hpp
+++ b/include/inja/node.hpp
@@ -101,7 +101,7 @@
 public:
   const json value;
 
-  explicit LiteralNode(const json& value, size_t pos) : ExpressionNode(pos), value(value) { }
+  explicit LiteralNode(std::string_view data_text, size_t pos) : ExpressionNode(pos), value(json::parse(data_text)) { }
 
   void accept(NodeVisitor& v) const {
     v.visit(*this);
diff --git a/include/inja/parser.hpp b/include/inja/parser.hpp
index e3c26e7..61e2aa8 100644
--- a/include/inja/parser.hpp
+++ b/include/inja/parser.hpp
@@ -23,11 +23,11 @@
  * \brief Class for parsing an inja Template.
  */
 class Parser {
-  const ParserConfig &config;
+  const ParserConfig& config;
 
   Lexer lexer;
-  TemplateStorage &template_storage;
-  const FunctionStorage &function_storage;
+  TemplateStorage& template_storage;
+  const FunctionStorage& function_storage;
 
   Token tok, peek_tok;
   bool have_peek_tok {false};
@@ -48,7 +48,7 @@
   std::stack<ForStatementNode*> for_statement_stack;
   std::stack<BlockStatementNode*> block_statement_stack;
 
-  inline void throw_parser_error(const std::string &message) const {
+  inline void throw_parser_error(const std::string& message) const {
     INJA_THROW(ParserError(message, lexer.current_position()));
   }
 
@@ -70,7 +70,7 @@
 
   inline void add_literal(const char* content_ptr) {
     std::string_view data_text(literal_start.data(), tok.text.data() - literal_start.data() + tok.text.size());
-    arguments.emplace_back(std::make_shared<LiteralNode>(json::parse(data_text), data_text.data() - content_ptr));
+    arguments.emplace_back(std::make_shared<LiteralNode>(data_text, data_text.data() - content_ptr));
   }
 
   inline void add_operator() {
@@ -638,8 +638,8 @@
 
 
 public:
-  explicit Parser(const ParserConfig &parser_config, const LexerConfig &lexer_config,
-                  TemplateStorage &template_storage, const FunctionStorage &function_storage)
+  explicit Parser(const ParserConfig& parser_config, const LexerConfig& lexer_config,
+                  TemplateStorage& template_storage, const FunctionStorage& function_storage)
       : config(parser_config), lexer(lexer_config), template_storage(template_storage), function_storage(function_storage) { }
 
   Template parse(std::string_view input, std::string_view path) {
diff --git a/include/inja/renderer.hpp b/include/inja/renderer.hpp
index 2e369c4..67dc09d 100644
--- a/include/inja/renderer.hpp
+++ b/include/inja/renderer.hpp
@@ -325,12 +325,12 @@
       make_result(get_arguments<1>(node)[0]->get<int>() % 2 == 0);
     } break;
     case Op::Exists: {
-      auto &&name = get_arguments<1>(node)[0]->get_ref<const std::string &>();
+      auto &&name = get_arguments<1>(node)[0]->get_ref<const std::string&>();
       make_result(data_input->contains(json::json_pointer(DataNode::convert_dot_to_ptr(name))));
     } break;
     case Op::ExistsInObject: {
       const auto args = get_arguments<2>(node);
-      auto &&name = args[1]->get_ref<const std::string &>();
+      auto &&name = args[1]->get_ref<const std::string&>();
       make_result(args[0]->find(name) != args[0]->end());
     } break;
     case Op::First: {
@@ -338,10 +338,10 @@
       data_eval_stack.push(result);
     } break;
     case Op::Float: {
-      make_result(std::stod(get_arguments<1>(node)[0]->get_ref<const std::string &>()));
+      make_result(std::stod(get_arguments<1>(node)[0]->get_ref<const std::string&>()));
     } break;
     case Op::Int: {
-      make_result(std::stoi(get_arguments<1>(node)[0]->get_ref<const std::string &>()));
+      make_result(std::stoi(get_arguments<1>(node)[0]->get_ref<const std::string&>()));
     } break;
     case Op::Last: {
       const auto result = &get_arguments<1>(node)[0]->back();
@@ -350,7 +350,7 @@
     case Op::Length: {
       const auto val = get_arguments<1>(node)[0];
       if (val->is_string()) {
-        make_result(val->get_ref<const std::string &>().length());
+        make_result(val->get_ref<const std::string&>().length());
       } else {
         make_result(val->size());
       }
diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp
index 715a218..0273fd4 100644
--- a/single_include/inja/inja.hpp
+++ b/single_include/inja/inja.hpp
@@ -94,9 +94,9 @@
 
 namespace inja {
 
-using Arguments = std::vector<const json *>;
-using CallbackFunction = std::function<json(Arguments &args)>;
-using VoidCallbackFunction = std::function<void(Arguments &args)>;
+using Arguments = std::vector<const json*>;
+using CallbackFunction = std::function<json(Arguments& args)>;
+using VoidCallbackFunction = std::function<void(Arguments& args)>;
 
 /*!
  * \brief Class for builtin functions and user-defined callbacks.
@@ -156,7 +156,7 @@
   };
 
   struct FunctionData {
-    explicit FunctionData(const Operation &op, const CallbackFunction &cb = CallbackFunction{}) : operation(op), callback(cb) {}
+    explicit FunctionData(const Operation& op, const CallbackFunction& cb = CallbackFunction{}) : operation(op), callback(cb) {}
     const Operation operation;
     const CallbackFunction callback;
   };
@@ -201,7 +201,7 @@
     function_storage.emplace(std::make_pair(static_cast<std::string>(name), num_args), FunctionData { op });
   }
 
-  void add_callback(std::string_view name, int num_args, const CallbackFunction &callback) {
+  void add_callback(std::string_view name, int num_args, const CallbackFunction& callback) {
     function_storage.emplace(std::make_pair(static_cast<std::string>(name), num_args), FunctionData { Operation::Callback, callback });
   }
 
@@ -442,7 +442,7 @@
 public:
   const json value;
 
-  explicit LiteralNode(const json& value, size_t pos) : ExpressionNode(pos), value(value) { }
+  explicit LiteralNode(std::string_view data_text, size_t pos) : ExpressionNode(pos), value(json::parse(data_text)) { }
 
   void accept(NodeVisitor& v) const {
     v.visit(*this);
@@ -1027,7 +1027,7 @@
     Number,
   };
 
-  const LexerConfig &config;
+  const LexerConfig& config;
 
   State state;
   MinusState minus_state;
@@ -1262,7 +1262,7 @@
   }
 
 public:
-  explicit Lexer(const LexerConfig &config) : config(config), state(State::Text), minus_state(MinusState::Number) {}
+  explicit Lexer(const LexerConfig& config) : config(config), state(State::Text), minus_state(MinusState::Number) {}
 
   SourceLocation current_position() const {
     return get_source_location(m_in, tok_start);
@@ -1416,7 +1416,7 @@
     }
   }
 
-  const LexerConfig &get_config() const {
+  const LexerConfig& get_config() const {
     return config;
   }
 };
@@ -1441,11 +1441,11 @@
  * \brief Class for parsing an inja Template.
  */
 class Parser {
-  const ParserConfig &config;
+  const ParserConfig& config;
 
   Lexer lexer;
-  TemplateStorage &template_storage;
-  const FunctionStorage &function_storage;
+  TemplateStorage& template_storage;
+  const FunctionStorage& function_storage;
 
   Token tok, peek_tok;
   bool have_peek_tok {false};
@@ -1466,7 +1466,7 @@
   std::stack<ForStatementNode*> for_statement_stack;
   std::stack<BlockStatementNode*> block_statement_stack;
 
-  inline void throw_parser_error(const std::string &message) const {
+  inline void throw_parser_error(const std::string& message) const {
     INJA_THROW(ParserError(message, lexer.current_position()));
   }
 
@@ -1488,7 +1488,7 @@
 
   inline void add_literal(const char* content_ptr) {
     std::string_view data_text(literal_start.data(), tok.text.data() - literal_start.data() + tok.text.size());
-    arguments.emplace_back(std::make_shared<LiteralNode>(json::parse(data_text), data_text.data() - content_ptr));
+    arguments.emplace_back(std::make_shared<LiteralNode>(data_text, data_text.data() - content_ptr));
   }
 
   inline void add_operator() {
@@ -2056,8 +2056,8 @@
 
 
 public:
-  explicit Parser(const ParserConfig &parser_config, const LexerConfig &lexer_config,
-                  TemplateStorage &template_storage, const FunctionStorage &function_storage)
+  explicit Parser(const ParserConfig& parser_config, const LexerConfig& lexer_config,
+                  TemplateStorage& template_storage, const FunctionStorage& function_storage)
       : config(parser_config), lexer(lexer_config), template_storage(template_storage), function_storage(function_storage) { }
 
   Template parse(std::string_view input, std::string_view path) {
@@ -2426,12 +2426,12 @@
       make_result(get_arguments<1>(node)[0]->get<int>() % 2 == 0);
     } break;
     case Op::Exists: {
-      auto &&name = get_arguments<1>(node)[0]->get_ref<const std::string &>();
+      auto &&name = get_arguments<1>(node)[0]->get_ref<const std::string&>();
       make_result(data_input->contains(json::json_pointer(DataNode::convert_dot_to_ptr(name))));
     } break;
     case Op::ExistsInObject: {
       const auto args = get_arguments<2>(node);
-      auto &&name = args[1]->get_ref<const std::string &>();
+      auto &&name = args[1]->get_ref<const std::string&>();
       make_result(args[0]->find(name) != args[0]->end());
     } break;
     case Op::First: {
@@ -2439,10 +2439,10 @@
       data_eval_stack.push(result);
     } break;
     case Op::Float: {
-      make_result(std::stod(get_arguments<1>(node)[0]->get_ref<const std::string &>()));
+      make_result(std::stod(get_arguments<1>(node)[0]->get_ref<const std::string&>()));
     } break;
     case Op::Int: {
-      make_result(std::stoi(get_arguments<1>(node)[0]->get_ref<const std::string &>()));
+      make_result(std::stoi(get_arguments<1>(node)[0]->get_ref<const std::string&>()));
     } break;
     case Op::Last: {
       const auto result = &get_arguments<1>(node)[0]->back();
@@ -2451,7 +2451,7 @@
     case Op::Length: {
       const auto val = get_arguments<1>(node)[0];
       if (val->is_string()) {
-        make_result(val->get_ref<const std::string &>().length());
+        make_result(val->get_ref<const std::string&>().length());
       } else {
         make_result(val->size());
       }
@@ -2762,13 +2762,13 @@
 public:
   Environment() : Environment("") {}
 
-  explicit Environment(const std::string &global_path) : input_path(global_path), output_path(global_path) {}
+  explicit Environment(const std::string& global_path) : input_path(global_path), output_path(global_path) {}
 
-  Environment(const std::string &input_path, const std::string &output_path)
+  Environment(const std::string& input_path, const std::string& output_path)
       : input_path(input_path), output_path(output_path) {}
 
   /// Sets the opener and closer for template statements
-  void set_statement(const std::string &open, const std::string &close) {
+  void set_statement(const std::string& open, const std::string& close) {
     lexer_config.statement_open = open;
     lexer_config.statement_open_no_lstrip = open + "+";
     lexer_config.statement_open_force_lstrip = open + "-";
@@ -2778,13 +2778,13 @@
   }
 
   /// Sets the opener for template line statements
-  void set_line_statement(const std::string &open) {
+  void set_line_statement(const std::string& open) {
     lexer_config.line_statement = open;
     lexer_config.update_open_chars();
   }
 
   /// Sets the opener and closer for template expressions
-  void set_expression(const std::string &open, const std::string &close) {
+  void set_expression(const std::string& open, const std::string& close) {
     lexer_config.expression_open = open;
     lexer_config.expression_open_force_lstrip = open + "-";
     lexer_config.expression_close = close;
@@ -2793,7 +2793,7 @@
   }
 
   /// Sets the opener and closer for template comments
-  void set_comment(const std::string &open, const std::string &close) {
+  void set_comment(const std::string& open, const std::string& close) {
     lexer_config.comment_open = open;
     lexer_config.comment_open_force_lstrip = open + "-";
     lexer_config.comment_close = close;
@@ -2826,68 +2826,68 @@
     return parser.parse(input);
   }
 
-  Template parse_template(const std::string &filename) {
+  Template parse_template(const std::string& filename) {
     Parser parser(parser_config, lexer_config, template_storage, function_storage);
     auto result = Template(parser.load_file(input_path + static_cast<std::string>(filename)));
     parser.parse_into_template(result, input_path + static_cast<std::string>(filename));
     return result;
   }
 
-  Template parse_file(const std::string &filename) {
+  Template parse_file(const std::string& filename) {
     return parse_template(filename);
   }
 
-  std::string render(std::string_view input, const json &data) { return render(parse(input), data); }
+  std::string render(std::string_view input, const json& data) { return render(parse(input), data); }
 
-  std::string render(const Template &tmpl, const json &data) {
+  std::string render(const Template& tmpl, const json& data) {
     std::stringstream os;
     render_to(os, tmpl, data);
     return os.str();
   }
 
-  std::string render_file(const std::string &filename, const json &data) {
+  std::string render_file(const std::string& filename, const json& data) {
     return render(parse_template(filename), data);
   }
 
-  std::string render_file_with_json_file(const std::string &filename, const std::string &filename_data) {
+  std::string render_file_with_json_file(const std::string& filename, const std::string& filename_data) {
     const json data = load_json(filename_data);
     return render_file(filename, data);
   }
 
-  void write(const std::string &filename, const json &data, const std::string &filename_out) {
+  void write(const std::string& filename, const json& data, const std::string& filename_out) {
     std::ofstream file(output_path + filename_out);
     file << render_file(filename, data);
     file.close();
   }
 
-  void write(const Template &temp, const json &data, const std::string &filename_out) {
+  void write(const Template& temp, const json& data, const std::string& filename_out) {
     std::ofstream file(output_path + filename_out);
     file << render(temp, data);
     file.close();
   }
 
-  void write_with_json_file(const std::string &filename, const std::string &filename_data,
-                            const std::string &filename_out) {
+  void write_with_json_file(const std::string& filename, const std::string& filename_data,
+                            const std::string& filename_out) {
     const json data = load_json(filename_data);
     write(filename, data, filename_out);
   }
 
-  void write_with_json_file(const Template &temp, const std::string &filename_data, const std::string &filename_out) {
+  void write_with_json_file(const Template& temp, const std::string& filename_data, const std::string& filename_out) {
     const json data = load_json(filename_data);
     write(temp, data, filename_out);
   }
 
-  std::ostream &render_to(std::ostream &os, const Template &tmpl, const json &data) {
+  std::ostream& render_to(std::ostream& os, const Template& tmpl, const json& data) {
     Renderer(render_config, template_storage, function_storage).render_to(os, tmpl, data);
     return os;
   }
 
-  std::string load_file(const std::string &filename) {
+  std::string load_file(const std::string& filename) {
     Parser parser(parser_config, lexer_config, template_storage, function_storage);
     return parser.load_file(input_path + filename);
   }
 
-  json load_json(const std::string &filename) {
+  json load_json(const std::string& filename) {
     std::ifstream file;
     file.open(input_path + filename);
     if (file.fail()) {
@@ -2901,28 +2901,28 @@
   /*!
   @brief Adds a variadic callback
   */
-  void add_callback(const std::string &name, const CallbackFunction &callback) {
+  void add_callback(const std::string& name, const CallbackFunction& callback) {
     add_callback(name, -1, callback);
   }
 
   /*!
   @brief Adds a variadic void callback
   */
-  void add_void_callback(const std::string &name, const VoidCallbackFunction &callback) {
+  void add_void_callback(const std::string& name, const VoidCallbackFunction& callback) {
     add_void_callback(name, -1, callback);
   }
 
   /*!
   @brief Adds a callback with given number or arguments
   */
-  void add_callback(const std::string &name, int num_args, const CallbackFunction &callback) {
+  void add_callback(const std::string& name, int num_args, const CallbackFunction& callback) {
     function_storage.add_callback(name, num_args, callback);
   }
 
   /*!
   @brief Adds a void callback with given number or arguments
   */
-  void add_void_callback(const std::string &name, int num_args, const VoidCallbackFunction &callback) {
+  void add_void_callback(const std::string& name, int num_args, const VoidCallbackFunction& callback) {
     function_storage.add_callback(name, num_args, [callback](Arguments& args) { callback(args); return json(); });
   }
 
@@ -2930,7 +2930,7 @@
    * Then, a template can be rendered in another template using the
    * include "<name>" syntax.
    */
-  void include_template(const std::string &name, const Template &tmpl) {
+  void include_template(const std::string& name, const Template& tmpl) {
     template_storage[name] = tmpl;
   }
 
@@ -2945,14 +2945,14 @@
 /*!
 @brief render with default settings to a string
 */
-inline std::string render(std::string_view input, const json &data) {
+inline std::string render(std::string_view input, const json& data) {
   return Environment().render(input, data);
 }
 
 /*!
 @brief render with default settings to the given output stream
 */
-inline void render_to(std::ostream &os, std::string_view input, const json &data) {
+inline void render_to(std::ostream& os, std::string_view input, const json& data) {
   Environment env;
   env.render_to(os, env.parse(input), data);
 }