feat: allow generic `Key` to pass type checking