completed app based on the tutorial