keyword parameter defaults are now initialized via a callback to allow dynamic initialization