basic web app functionality implemented