Completed Chapter 6 - Modeling users