sample app - from chap 5