sample app by hartl