Get initial commit in. Still need to wrap some tests around it and probably expose the events interface.