add reverse map to registry; convert to true singleton
move implementation out of header where possible
reverse lookups via typeid().name()