Let's make Operator's Token an object and not a pointer
Namespaces are such a great idea. Let's actually use them.
Changed pointers back to shared and removed all traces of visiting (I need to figure out how to resolve all these circular dependencies