diff --git a/interface/CPP/teqp_impl_factory.cpp b/interface/CPP/teqp_impl_factory.cpp
index bdecf6f3d38958af8c2786b5f16225af7b4a1c7d..3e6b7e32fb5275029e6384e4783c8e0c2c03af23 100644
--- a/interface/CPP/teqp_impl_factory.cpp
+++ b/interface/CPP/teqp_impl_factory.cpp
@@ -12,6 +12,7 @@ namespace teqp {
 
         static std::unordered_map<std::string, makefunc> pointer_factory = {
             {"vdW1", [](const nlohmann::json& spec){ return make_owned(vdWEOS1(spec.at("a"), spec.at("b"))); }},
+            {"vdW", [](const nlohmann::json& spec){ return make_owned(vdWEOS<double>(spec.at("Tcrit / K"), spec.at("pcrit / Pa"))); }},
             
             {"PR", [](const nlohmann::json& spec){ return make_owned(make_canonicalPR(spec));}},
             {"SRK", [](const nlohmann::json& spec){ return make_owned(make_canonicalSRK(spec));}},
@@ -45,7 +46,7 @@ namespace teqp {
                 return (itr->second)(spec);
             }
             else{
-                throw std::invalid_argument("aah");
+                throw std::invalid_argument("Don't understand \"kind\" of: " + kind);
             }
         }