It works

Needs polish, both the code and the UX.