add a brief explanation of the application design

I added most if not all of this information within commit messages as I went, but it's nice to have it a ll in one place, especially when others are going to review it.