Add a web UI; add some overhauling in the backend.