``cannotBeEmpty`` looks weird as the code allows using an empty key