Moved web functionality into separate package for modularity