diff --git a/lib/nydp/builtin.rb b/lib/nydp/builtin.rb
index <HASH>..<HASH> 100644
--- a/lib/nydp/builtin.rb
+++ b/lib/nydp/builtin.rb
@@ -5,8 +5,10 @@ module Nydp::Builtin
   module Base
     def invoke vm, args
       builtin_invoke vm, args
+    rescue Nydp::Error => ne
+      raise ne
     rescue Exception => e
-      new_msg = "Called #{self.inspect}\nwith args #{args}\nraised\n#{Nydp.indent_text e.message}"
+      new_msg = "Called #{self.inspect}\nwith args #{args.inspect}\nraised\n#{Nydp.indent_text e.message}"
       raise $!, new_msg, $!.backtrace
     end
 
diff --git a/lib/nydp/builtin/error.rb b/lib/nydp/builtin/error.rb
index <HASH>..<HASH> 100644
--- a/lib/nydp/builtin/error.rb
+++ b/lib/nydp/builtin/error.rb
@@ -3,7 +3,7 @@ class Nydp::Builtin::Error
 
   # override #invoke on nydp/builtin/base because
   # we don't want to inherit error handling
-  def invoke vm, args
+  def builtin_invoke vm, args
     raise Nydp::Error.new(args.inspect)
   end
 end
builtins: special handling for Nydp::Error, no longer need to special-case builtin/error