diff --git a/lib/mutations/command.rb b/lib/mutations/command.rb
index <HASH>..<HASH> 100644
--- a/lib/mutations/command.rb
+++ b/lib/mutations/command.rb
@@ -84,19 +84,10 @@ module Mutations
 
     # Instance methods
     def initialize(*args)
-      if args.length == 0
-        @original_hash = {}
-      else
-        @original_hash = args.shift
-        raise ArgumentError.new("All arguments must be hashes") unless @original_hash.is_a?(Hash)
-        @original_hash = @original_hash.with_indifferent_access
-      end
-
-      args.each do |a|
-        raise ArgumentError.new("All arguments must be hashes") unless a.is_a?(Hash)
-        @original_hash.merge!(a)
+      @original_hash = args.each_with_object({}.with_indifferent_access) do |arg, h|
+        raise ArgumentError.new("All arguments must be hashes") unless arg.is_a?(Hash)
+        h.merge!(arg)
       end
-
       @filtered_input, @errors = self.input_filters.filter(@original_hash)
     end
 
diff --git a/spec/command_spec.rb b/spec/command_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/command_spec.rb
+++ b/spec/command_spec.rb
@@ -72,6 +72,10 @@ describe "Command" do
       assert_raises ArgumentError do
         outcome = SimpleCommand.run(1)
       end
+
+      assert_raises ArgumentError do
+        outcome = SimpleCommand.run({name: "John"}, 1)
+      end
     end
 
     it "should accept nothing at all" do
Simplify Command#initialize

The main incompatibility is that @original_hash is no longer the same
object as the first argument. That sounds actually safer IMO as it is
definitely part of the internal implementation and should not be
changed from the outside. I would even be tempted to freeze it.