made it to give more verbose errors when arguments of wrong types are passed, added setters with types (e.g. setInt, etc)