Add NER tagging, and break things down into more modular classes