Fixes #2. Wrote some brief additional comments for our new class to document why we've made some of the choices