allow undefs, always have a key present regardless if no value returned