split off functions without web args into main SA submodules, added cache.py