diff --git a/include/inja/lexer.hpp b/include/inja/lexer.hpp
index e9a900f..e31c3d6 100644
--- a/include/inja/lexer.hpp
+++ b/include/inja/lexer.hpp
@@ -169,6 +169,8 @@
       minus_state = MinusState::Operator;
       return scan_number();
     case '_':
+    case '@':
+    case '$':
       minus_state = MinusState::Operator;
       return scan_id();
     default:
diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp
index 26a6373..516aa95 100644
--- a/single_include/inja/inja.hpp
+++ b/single_include/inja/inja.hpp
@@ -2049,6 +2049,8 @@
       minus_state = MinusState::Operator;
       return scan_number();
     case '_':
+    case '@':
+    case '$':
       minus_state = MinusState::Operator;
       return scan_id();
     default:
@@ -3435,6 +3437,10 @@
 
   template<bool throw_not_found=true>
   Arguments get_argument_vector(size_t N, const AstNode& node) {
+    if (json_eval_stack.size() < N) {
+      throw_renderer_error("function needs " + std::to_string(N) + " variables, but has only found " + std::to_string(json_eval_stack.size()), node);
+    }
+
     Arguments result {N};
     for (size_t i = 0; i < N; i += 1) {
       result[N - i - 1] = json_eval_stack.top();
diff --git a/test/test-functions.cpp b/test/test-functions.cpp
index f903102..60c8b79 100644
--- a/test/test-functions.cpp
+++ b/test/test-functions.cpp
@@ -161,6 +161,8 @@
     CHECK(env.render("{{ exists(\"zipcode\") }}", data) == "false");
     CHECK(env.render("{{ exists(name) }}", data) == "false");
     CHECK(env.render("{{ exists(property) }}", data) == "true");
+
+    // CHECK(env.render("{{ exists(\"keywords\") and length(keywords) > 0 }}", data) == "false");
   }
 
   SUBCASE("existsIn") {
diff --git a/test/test-renderer.cpp b/test/test-renderer.cpp
index 46935ef..8d5b447 100644
--- a/test/test-renderer.cpp
+++ b/test/test-renderer.cpp
@@ -16,6 +16,8 @@
   data["brother"]["daughter0"] = {{"name", "Maria"}};
   data["is_happy"] = true;
   data["is_sad"] = false;
+  data["@name"] = "@name";
+  data["$name"] = "$name";
   data["relatives"]["mother"] = "Maria";
   data["relatives"]["brother"] = "Chris";
   data["relatives"]["sister"] = "Jenny";
@@ -38,6 +40,8 @@
     CHECK(env.render("Hello {{ brother.name }}!", data) == "Hello Chris!");
     CHECK(env.render("Hello {{ brother.daughter0.name }}!", data) == "Hello Maria!");
     CHECK(env.render("{{ \"{{ no_value }}\" }}", data) == "{{ no_value }}");
+    CHECK(env.render("{{ @name }}", data) == "@name");
+    CHECK(env.render("{{ $name }}", data) == "$name");
 
     CHECK_THROWS_WITH(env.render("{{unknown}}", data), "[inja.exception.render_error] (at 1:3) variable 'unknown' not found");
   }
