Huge rework. This commit doesn't include all the website components. See later commit.