First draft of the research engine.
Still pretty messy, not everything is in its right sub-class