better handling of default values
new func