make Keys more strongly typed
bubble up errors more nicely