wrapped most of web.py so that when context is named web, there are no name clashes