if $dictionary is undef, we request a new one