else throw an exception? we are expecting valid keys here right?