Finished and working. Some extra features in TODO