demo app from Hartl Chapter 2