made Arguments immutable, removed implicit usage showing and widened parameter type