First commit, basic functionality, still not usable.