Mithril port

I plan on adding more features to this, so might as well use a framework.