demo app from chapter 2