abstracted to take an arbitray number of params
abstracted the name of the hash
fixed some lines which were too long
updated the gem spec