refactor web module