Add back support for ? ! - in names; ensure cache of ref is private to avoid conflicts