added documentation to explain theory behind how this project is set up.