need @throws KeyError