Created seperate Arg classes
Renamed Arg classes
Refactored utilities, added test cases