follow WebModule spec