finished needed app functionality