split out web, fix directory dependency order