switch over args to using maps instead of keyword lists