Mostly complete; works well, lots of minor bugs though