Drinking Water Supply Challenges: A Predictive Mass Balance Model for Sustainable Reservoir Management

By Andrew Walker, PH, CFM & Kevin MacKinnon, PG, CG, PH-GW

Providing sufficient raw water for drinking water can be a challenging business, particularly with surface water sources. Increasing regulatory pressure and new development, combined with the associated increased demand and the increasing severity and frequency of drought conditions in New England, only exacerbate those challenges. This article summarizes the development of a mass balance model for the managers of a southern New Hampshire reservoir to forecast likely future reservoir levels to guide water supplier decision making and balance the need for a consistent drinking water supply with ecological needs.


Picture of figure for NEWQWhat is a Reservoir Model?

A reservoir model is a mass balance model in which all of the inflows to or outflows from a reservoir are tabulated at regular time intervals. This is done in order to calculate or estimate the net change in the reservoir’s storage volume at each interval. The net change in storage at each time interval is then related to a change in surface area or water level in order to make useful statements about the reservoir’s reliability, both now and in the future. The time intervals, or time steps, typically range from as short as 15 minutes to as long as one month, depending on the quality of the input data and the goals of the model.

Figure 1 shows typical inflows to reservoirs include:

  • precipitation landing on its surface,
  • runoff from the contributing watershed,
  • potentially snowmelt, and, in some cases,
  • streamflow from a larger watershed upstream.

Depending on the reservoir and the season, groundwater contributions from an underlying aquifer (bedrock or surficial) can also represent a significant source of recharge annually or seasonally.

Typical outflows from a reservoir include:

  • evaporation from its surface,
  • losses over a spillway or other outlet structure,
  • releases into a downstream channel to maintain suitable aquatic habitat (“fish flows”), and, of course,
  • drinking water withdrawals.

If the reservoir is relatively high in relation to the surrounding water table, groundwater losses can also represent a significant annual or seasonal outflow or in response to individual storm events.

What Purpose Can a Reservoir Model Serve?

Reservoir models are tools to help water system operators and other municipal staff manage one of their community’s most important natural resources. At their core, reservoir models predict future water levels or volumes based on a combination of current conditions and some set of potential future inflows and outflows. By adjusting those potential future inflows and outflows, reservoir models can be used to provide guidance on a wide range of questions. Some predictions are more short-term in nature, such as:

  • Given our current water level and average future conditions, how likely is the reservoir to fully recover from the high-demand season during the winter and spring?
  • If we don’t get any rain for the next two months, how low will the reservoir get?
  • Will we have enough raw water to continue to meet customer demands next month?

By simulating many years’ worth of inflows and outflows, reservoir models can be used to make statements about the likelihood that a reservoir might reach some warning level that would require action (e.g., enact water conservation measures or activate an emergency interconnection). The models can also help predict the likelihood that the reservoir might reach some critical threshold, below which more severe consequences would be experienced (e.g., water quality and treatment challenges, political/ abutter pressure, reservoir failure). These more complex simulations can be used to evaluate longer-term questions about reservoir and water system management strategies and about a water system’s resilience. These questions might include:

  • Are voluntary watering restrictions enough in most years or should we initiate mandatory restrictions earlier in the summer and at higher reservoir levels? If we do, how will that impact revenue?
  • Are our existing emergency interconnections sufficient during drought years?
  • Should we be purchasing water from a regional supplier earlier in the dry season or in larger quantities? Is that more cost-effective than water conservation measures?
  • Do we need to consider developing, reactivating, or redeveloping a groundwater source?
  • If the severe drought of the 1960s occurred again, would we be ready?
  • If precipitation and temperature patterns continue to evolve due to climate change, how will that impact the reliability of our sources?

Reservoir models support decision making, both in the short and the long term. They can be used to predict water scarcity months in advance, and they can also be used to support an evaluation of the costs and benefits of a wide range of reservoir and water system management strategies. This article describes the development of one such reservoir model and how its owner uses it to inform their decision making.

Figure 2

Salem, New Hampshire

The Town of Salem, a bedroom community in southern New Hampshire on the border with Massachusetts, serves over 7,500 homes and businesses with an average demand of 2.3 million gallons per day (MGD) of clean drinking water. Like many communities throughout New England, Salem sees its greatest demand in the summer months due to increased outdoor watering usage, when average demand peaks at 3.18 MGD in July. The town maintains two primary drinking water supply sources, Canobie Lake and the Arlington Reservoir. Due to differing water treatment needs, raw water is withdrawn from only one source at a time and treated by the Canobie Lake Water Treatment Plant. Arlington Reservoir is typically only used from mid-November through mid-May, while Canobie Lake (Figure 2) is the primary drinking water source in the summer and early-fall dry season. The town also recently became a founding member community of the Southern New Hampshire Regional Water project (https://www.journalofnewwa-digital.com/newq/0322_september_2022/MobilePagedArticle.action?articleId=1821730#artic leId1821730). Currently in its first phase – others are planned – Salem has committed to consume an average of 0.25 MGD of regional water while wheeling additional water through their system to downstream communities. The infrastructure used to pump regional water into Salem’s distribution system has a maximum capacity of approximately 0.90 MGD, so while Salem is obligated to purchase 0.25 MGD. of regional water, they may purchase significantly more if they wish. This decision is particularly relevant during the dry season when the town primarily relies on Canobie Lake to supply their raw water needs. The town first commissioned the development of a Canobie Lake reservoir model in 1996. The original 1996 model consisted of three guidance curves, one each for:

  • “average year” conditions;
  •  5% drought conditions, representing net reservoir inflows that would be expected to occur once every 20 years; and
  • drought-of-record conditions, mimicking conditions experienced during the multiyear 1960s drought.

All three guidance curves extend for a period of five years and then repeat. This original model is used by recording recently observed Canobie Lake reservoir levels and visually comparing them to the various guidance curves to get a sense for how dry current and near-future conditions are based on how quickly the reservoir levels have been changing over the past few weeks.

Figure 3

Unfortunately, since 1996, the climatological data used to develop the original three guidance curves have become outdated. For example, actual reservoir levels dropped below the “average year” guidance curves a total of 13 years over the 18-year period from 1999 to 2016, representing about 72% of summers rather than about 50% that would be expected for average conditions. Similarly, actual reservoir levels dipped below the “5% drought” conditions during 28% of those same 18 years instead of the 5% that might be expected. The deviation of actual reservoir levels from model expectations suggests that the estimated inflows and outflows used to develop those curves are no longer appropriate.

In addition, the original model is considered static rather than dynamic. Its projected future reservoir levels never deviate based on current conditions in the reservoir or its watershed. It is also incapable of evaluating how changes in drinking water demands, water conservation, or regional water purchases might impact future reservoir levels. To better support their reservoir and water system management decisions, the town tasked its water supply engineering consultant with developing a new, dynamic Canobie Lake reservoir model with the latest climatological data capable of evaluating the financial impact of several management strategies and their associated impacts on predicted future reservoir levels.

Reservoir Model Development

Bathymetric Survey

As described above, reservoir models tabulate all the inflows and outflows to a reservoir or series of reservoirs and calculate the associated change in storage volume for each time step. Of course, storage volume is an important model output as it relates directly to how much raw water remains in a community’s water supply source. However, other important model outputs include the water surface elevation, also referred to as the reservoir’s stage, and the surface area of the reservoir.

The stage and surface area of a reservoir are often associated with recreational, aesthetic, political, or water quality considerations. The reservoir stage is also often required to accurately calculate how much water is lost over a spillway or other outlet, and surface area is required to calculate the volume of water gained via precipitation or lost through evaporation. For this reason, one of the first tasks in developing a reservoir model is to develop an accurate relationship between reservoir stage, surface area, and storage volume. In the case of Canobie Lake, developing that relationship required conducting a bathymetric survey of the reservoir.

A sonar bathymetric survey was conducted over the course of a single day by a two-man team, using a Lowrance© Elite FS7 sonar/GPS unit mounted to a 12-foot aluminum Jon Boat. The sonar/GPS unit was configured to measure and record depth and location at a rate of approximately one measurement per second. The boat was navigated in roughly concentric circles (Figure 3) with average spacing between transect paths of 90 to 150 feet to provide comprehensive coverage of the lake bottom. These efforts traversed a total of approximately 16 miles and collected a total of 43,560 data points at an average distance of one point every two feet.

The survey generated a 3D surface map (Figure 4) using the lake boundary and sonar data with ESRI’s Topo to Raster interpolation tool in ArcMap 10.7. Based on both the 3D bathymetric surface and on publicly available LiDAR data for relatively high reservoir levels, a polynomial best-fit relationship (Pearson’s R in excess of 0.99) was developed to translate between reservoir stage, surface area, and storage volume.

Precipitation (Inflow)

Long-term daily precipitation depth totals were obtained from the National Weather Service gauge in nearby Nashua, New Hampshire (USC00275712) for the period 1998 through 2021. These were then multiplied by the Canobie Lake surface area at each model timestep to estimate the volume of precipitation entering the reservoir. Precipitation data from other gauges were considered (e.g., Manchester, Lowell), but a statistical comparison with precipitation data gathered at the Canobie Lake water treatment plant confirmed that the Nashua gauge was most representative of rainfall in the Canobie Lake watershed. Using the treatment plant precipitation data was also considered, however, the dataset was shorter than five years. A longer-term dataset was necessary to support a statistically reliable model.

Runoff (Inflow)

Surface runoff or streamflow entering Canobie Lake was estimated using data from a nearby USGS gauge. Canobie Lake discharges into Policy Brook, which is a tributary to the Spicket River. The USGS maintains two streamflow gaging stations on the Spicket River, one in North Salem (01100505) upstream of the confluence of Policy Brook and the Spicket, and one downstream in Massachusetts (01100561). While the upstream gauge has a smaller watershed, closer in size to that of Canobie Lake, both gauges are of similar distance to Canobie Lake, and the downstream gauge actually receives discharge from the lake’s flume outlet. For this reason, area-weighted data from the downstream gauge was used to estimate surface runoff or streamflow into Canobie Lake in response to precipitation events for the period 2006 through 2021.

Evaporation (Outflow)

Evaporation is not commonly measured or recorded by water systems or even by most National Weather Service meteorological stations. However, there are many ways to estimate evaporation from more commonly available data with varying degrees of accuracy. One such method, the Papadakis method, relies solely on maximum and minimum daily temperature data and has been shown to perform relatively well in New Hampshire.1 Using the Papadakis method, daily evaporation rates for the period 1998 through 2021 were estimated for Canobie Lake using maximum and minimum daily temperatures recorded at the same National Weather Service meteorological gaging station in Nashua (USC00275712).

Flume Discharge (Outflow)

While no dataset exists of discharge from Canobie Lake to Policy Brook, discharge rates were readily calculated based on reservoir level and typical or historically recorded outlet operation notes. The Canobie Lake Dam includes a 4-foot-wide flume equipped with a slide gate with a 2-foot range to control discharge. Consistent with typical operations relayed verbally by town staff and confirmed with historical operation notes, the reservoir model assumes that the gate remains closed until the reservoir level reaches El. 220. At El. 220, the gate is assumed to open by 25% and continue to open incrementally until it is fully open when the reservoir level is at El. 220.8. Flow discharged though the flume spillway is estimated using a typical orifice flow equation.

Raw Water Withdrawals (Outflow)

The town has maintained daily or weekly records of reservoir levels for many years, although some older data were not readily available or digitized. Daily raw water withdrawals from Canobie Lake were obtained for two periods, 2011 through 2016 and 2020 through 2021. The town’s records of these withdrawals were used in two ways:

  1. specific daily withdrawal volumes were incorporated into the calibration and validation simulations, while
  2. average withdrawals for each of the 366 calendar days were calculated and used to drive predictive model simulations of future conditions.

Groundwater (Inflow and Outflow)

Like many surface waterbodies, Canobie Lake sometimes experiences a net inflow of groundwater when reservoir levels are low and the nearby water table is relatively high. At other times though, when the water table drops below the reservoir level, the reservoir experiences a net loss of water. These groundwater fluxes can be significant in magnitude and play an important role in estimating the change of the reservoir’s storage volume over time. Unfortunately, as with most drinking water reservoirs, little hard data exists about the surface water/ groundwater vertical gradient to help estimate the seasonal variability of these groundwater fluxes. The closest USGS groundwater gauge in Haverhill, Massachusetts, was evaluated for its potential use as a proxy for groundwater flux into Canobie Lake. However, the Haverhill groundwater gauge data was found to be quite poorly correlated to changes in Canobie Lake, likely due to the distance between the sites and differing hydrogeology. Groundwater fluxes into and out of the reservoir were instead estimated on a monthly basis during the model calibration process.

Lake Level

Daily historical water level observations in Canobie Lake were obtained for the periods 2012 through 2016 and from 2020 through 2021. While these data were not used by the predictive reservoir model, they were used to estimate changes in the reservoir’s storage volume from one day to the next to estimate groundwater inflows or outflows during the calibration and validation process.

Model Calibration and Validation

Model calibration is the process of iteratively adjusting input parameters and assumptions to maximize agreement between simulated and historically observed reservoir levels. This calibration is necessary to ensure the reliability of model outputs under future or hypothetical conditions. Calibration of the Canobie Lake reservoir model was conducted for the period with the longest continuous set of daily data for all inflows and outflows, January 2012 through December 2016. Other than the groundwater data, all other datasets are either:

  • actual observed data for Canobie Lake, or
  • data from high quality, nearby sources that are very likely representative of Canobie Lake conditions.

To calibrate the reservoir model, groundwater contributions were estimated based on the other known, higher quality datasets such as inflows and outflows from the lake and from historically observed reservoir levels.

The project team first set up the model to tabulate all inflows and outflows and estimate reservoir levels during the 2012-2016 period without accounting for groundwater contributions. The resulting lake levels simulated without groundwater contributions were compared against observed lake level data over that same period, and the differences in lake levels were translated into equivalent missing water volumes. These were assumed to be caused by the unincorporated groundwater inflows/outflows. The missing volumes were summarized for each month in the 2012-2016 calibration period, a total of 72 months.

After two statistical outliers were removed, the average groundwater contribution for each of the 12 calendar months was estimated. After the groundwater contributions were incorporated into the reservoir model, the model was re-run to evaluate the model’s ability to recreate historically observed reservoir levels.

As Figure 5 shows, the simulated reservoir levels match historical lake levels quite well. The slopes of the simulated (green) and observed (blue) reservoir level data – falling in the late spring and summer and rising in the late fall and winter – match very well. This suggests that most datasets used to drive the model are appropriate. The over-winter reservoir levels match very well during four out of five winters, generally within a quarter foot. The one exception is the winter of 2015-2016 in which the model suggests the reservoir would have recovered approximately a foot less than it did historically. This discrepancy is due to the model predicting that the minimum reservoir level during the summer of 2015 should have been about a foot lower than what was observed.

In general, however, summer minimum reservoir levels are well matched. The discrepancies between observed and simulated summer minimum reservoir levels are likely due to year-to-year variability in summertime groundwater contributions. These are a function of both the reservoir level and the ambient groundwater level in the aquifer surrounding the reservoir. Due to the lack of available groundwater data near the reservoir, it was not possible to vary simulated groundwater contributions year to year. Instead, the model assumes that while groundwater contributions may vary month to month, they remain constant for each calendar month year to year. In reality, as the groundwater table near the reservoir rises and falls concurrently with the reservoir surface, those groundwater contributions can change significantly from year to year and season to season. Maintaining a record of groundwater levels near the reservoir would help improve model accuracy in the future.

Given the model’s successful overall calibration, the model was further validated using data representative of the 2020-2021 period to ensure that the assumptions made during the calibration process remain valid for a different set of hydrologic conditions. As with the calibration results shown in Figure 6, the simulated water levels (green) trend very closely to the observed data (blue) from May through October. In this case, however, there is a noteworthy discrepancy during winter months when water levels are recovering.

This discrepancy can potentially be addressed with better groundwater data, since

groundwater interactions can differ between winter months and summer months. However, the limited groundwater data available in the area only allowed the model to use a static set of groundwater values for simulation. Regardless, based on these simulation results, the reservoir model was shown to be well-calibrated throughout the year and provides a useful tool for predicting future reservoir levels.

Model Interface

While the calibrated model’s ability to simulate historical reservoir trends with reasonable accuracy is useful to understand previous droughts, its real value is in its ability to predict future reservoir levels given current conditions. To facilitate this predictive capability, more than 20 years’ worth of historical precipitation, streamflow, and temperature data, along with available historical reservoir level data, were subjected to statistical analyses. The goal is to determine the percentile likelihood of a given magnitude inflow or outflow occurring on each of the 366 unique calendar days. User-entered values representative of current reservoir and watershed conditions were then compared with those historical datasets to determine the percentile(s) associated with current conditions, effectively identifying the current “wetness” or health of the reservoir and its watershed. The dynamic model then projected future reservoir levels based on that current state.


The model was controlled by six modules, three of which fine-tuned the model’s ability to predict future reservoir levels under a no-action scenario as accurately as possible. Three other modules allow the user to evaluate the potential benefit to future reservoir levels and the approximate financial impacts of several different reservoir management strategies.

  • Module 1 allows the user to enter the latest measured reservoir level and its associated date. These two pieces of information are the only mandatory inputs to the model. They are used to evaluate the current relative wetness of the reservoir and the start date for all model projections.
  • Module 2 (see Table 1) is optional and allows the user to enter recent watershed-related data (yellow boxes), including the total precipitation over the past 90 days, the current instantaneous streamflow at the USGS’ Spicket River gauge, and the average maximum and minimum temperatures recorded over the past 30 days. All four of these inputs are automatically calculated from daily data already recorded by town staff. Each one of these inputs has a significant statistical correlation with Canobie Lake levels. These optional inputs are used by the model to estimate the current wetness of the watershed to project future inflows and outflows to the reservoir more accurately. This module also provides a comparison to the status of the reservoir and an indication to the user whether the watershed is significantly wetter or drier than the reservoir itself.
  • Module 3 allows the user to enter recent average finished water demand in order to fine-tune the model’s ability to project raw water withdrawal rates from the reservoir in the near future. Not all summers are the same in terms of water usage. During dry summers, before water conservation measures are recommended or required, customers tend to use more water than average for irrigation. In contrast, during abnormally wet summers, when lawns are irrigated naturally through rainfall, demand is generally below average. Raw water withdrawal rates can have a significant impact on projected future reservoir levels. This optional module allows the user to fine-tune the model’s ability to estimate those withdrawals.
  • Module 4 allows the user to specify the start and end dates of when raw water is withdrawn from Canobie Lake. Typically, the town switches from Arlington Reservoir to Canobie Lake in May and then back again in November or December. Modifying the dates during which Canobie Lake provides raw water is one means of managing its reservoir level. This module also allows the user to understand impacts to Canobie Lake reservoir levels if its operating season must be extended.
  • Module 5, which can be toggled on and off, allows the user to test the impact of water conservation on future reservoir levels. This module applies a user-defined percentage reduction to finished water demand, calculating its impact on raw water withdrawal rates. This reduction can be applied to any range of months as specified by the user. The user may also enter the average sale price of its finished water to estimate the potential financial impact of instituting water conservation measures and selling less water.
  • Module 6 provides the option to evaluate the impact of additional regional water purchases, above and beyond the town’s 0.25 MGD commitment to the Southern New Hampshire Regional Water Project. The user can specify the additional regional purchases anticipated monthly. By entering the average cost of regional water and the average cost of treating raw water from the town’s own reservoirs, the model can estimate the financial impact of increasing its dependence on regional water. If no additional purchases are anticipated, this module can simply be toggled off.

Model Output

Once the user has entered all the inputs they wish, the dynamic reservoir model then simulates the next 12-month period, assigning daily inflow and outflow values based on the current and forecasted future wetness of the reservoir and its watershed. Projected future reservoir levels are presented graphically (see Figure 7) so the user can see:

  • how reservoir levels are projected to change daily over the next 12 months,
  • how that projection compares to historical average reservoir levels at different times of the summer, and
  • how the projection might be expected to change if inflows and outflows are wetter or drier than anticipated.

Other model results are also summarized in table form (see Table 2) for each of four scenarios:

  1. no-action, or business as usual,
  2. instituting water conservation measures (Module 5),
  3. making additional regional water purchases (Module 6), or
  4. a combination of water conservation and additional regional water purchases (Modules 5 and 6).

Outputs include:

  • the projected minimum reservoir level over the next 12 months (highlighted in red in Table 2 if it falls below the lowest acceptable reservoir level),
  • the date of that projected minimum level and the number of days until the reservoir level is predicted to drop below a user-identified warning or action level in order to provide the user with a sense for how long they have to act before failure is likely to occur,
  • the benefit of the reservoir management strategies in terms of the increase in projected minimum reservoir levels, and
  • the estimated financial impact of implementing that management scenario.


Example Model Simulation

The value of the Canobie Lake reservoir model to the Town of Salem is illustrated by an example of how it might have been used in 2015 and 2016 (a recent severe drought in New England). In general, the New England region experienced below average rainfall during the summer of 2015 and significantly below average precipitation that fall and the winter of 2016.2 As a result, lakes and reservoirs that reached relatively low levels in the summer of 2015 did not necessarily fully recover to typical over-winter levels heading into the spring of 2016. As a result, the generational drought that occurred over the summer of 2016 resulted in even greater water scarcity for many water suppliers. Canobie Lake was no exception.

On November 20, 2015, the Town of Salem switched its raw water withdrawal source from Canobie Lake over to Arlington Reservoir for the winter. At that time, Canobie Lake was down nearly four feet, well below the average maximum drawdown. On December 12, less than three weeks later, if reservoir level and watershed data (i.e., precipitation, streamflow, temperature) had been inputted into the reservoir model, it would have predicted that Canobie Lake would not fully recover over the winter, reaching a peak of 0.62 feet below full capacity. This prediction was quite accurate, with the reservoir recovering to 0.8 feet below full capacity, a discrepancy of only 0.18 feet (Figure 8).

On May 28, 2016, the Town of Salem switched its raw water source back to Canobie Lake. At that time, the reservoir model would have predicted reservoir levels to dip more than five feet below full capacity, significantly below the reservoir’s warning level. Again, the model’s prediction was quite accurate. Historical reservoir level data indicated that the reservoir reached a minimum level only 0.3 feet higher than the model prediction (Figure 9).

If the model was available then, the town might also have seen that a combination of additional regional water purchases and mandatory outdoor watering bans might have resulted in the reservoir’s maximum drawdown being reduced by nearly 1.2 feet and keeping the reservoir’s minimum level during the summer and fall of 2016 above the reservoir’s warning level.

Lessons Learned

Through the development of this tool, the power or usefulness of high-quality data was emphasized repeatedly. The ability to develop accurate reservoir models hinges on the ability to calibrate and validate those models. These processes can only be accomplished with high quality, long-term data from reservoir levels, raw water withdrawals, and detailed records of the operation of any gates, stop logs, or other outlet structures. Installation of automated pressure transducers to monitor reservoir levels and detailed notetaking of outlet operations are both relatively low cost but can allow the development of reservoir models that can save communities tens or even hundreds of thousands of dollars in short order.

A second lesson learned through this project is the need to think early and often about how such reservoir models can be incorporated or embedded into a water department’s existing data collection efforts. This would minimize the need to enter daily data into multiple digital files. In addition to incorporating SCADA-collected data into a reservoir model, such models can also be designed to pull publicly available datasets from the USGS and National Weather Service automatically, streamlining the use of the model and increasing its accuracy.


The Town of Salem replaced an outdated static model of Canobie Lake, its sole dry season surface water reservoir, with a new, dynamic reservoir model that is capable of adjusting its predictions. These predictions are based on recent trends of not only reservoir levels but watershed indicators like precipitation totals, streamflow, and maximum and minimum daily temperatures, as well as recent customer demand. The new model allows the town to evaluate several reservoir management strategies, or combinations of strategies, including:

  • shifts to the start, end, or duration of the Canobie Lake withdrawal season;
  • increased additional purchases of regional water through the Southern New Hampshire Regional Water project; and
  • various water conservation efforts.

The model predicts future reservoir levels for a 12-month period for these strategies, comparing their effectiveness and cost to a no-action or business- as-usual scenario. These comparisons allow the town to make informed decisions with regard to managing this critical water resource.

  1. Rosenberry DO, Winter TC, Buso DC, Likens GE. 2007. Comparison of 15 evaporation methods applied to a small mountain lake in northeastern USA. Journal of Hydrology 340, p. 149-166.
  2. “Coping with drought and its aftermath in the Northeast,” National Oceanic and Atmospheric Administration (NOAA), National Integrated Drought Information System (NIDIS), and Northeast Regional Climate Center, 2017 https://www.nrcc. cornell.edu/regional/drought/pubs/assessment_2016.pdf.


Andrew Walker, PH, CFM is a Technical Leader and can be reached at walkera@wseinc.com

Kevin MacKinnon, PG, CG, PH-GW is an Associate and can be reached at mackinnk@wseinc.com

Published in NEWWA Journal, September 2023

Posted in News, Publications and tagged , .