allow passing a block for default values