First commit. May still ditch this and move to node.