pass a hash instead of flat args