Just needs some final polishing, but usable now.