Doesn't this change the functionality since previously we were passing in the cloned objects or nil. Now we are passing in the original objects.

Perhaps `self.new(*key)` would make more sense