Add a sensible set of Psi classes

Adds an initial set of Psi classes and takes advantage of them to clean up some code. 

Also positions us to implement some more features (for instance, it should be possible to pull together a structure view based on this pretty quickly...)