create hid, if none exists
createUID supports prefixes now
move BaseEventEmitter & BaseSingleton to core