return None if no key found, avoid KeyError