do not expose internals, instead allow users to make their own Keymap using exposed Core functions, but not allow them to make their own Core functions