Still unfinished, and one known bug.