<?xml version="1.0" encoding="windows-1252"?>
<informationTable xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<infoTable>
  <nameOfIssuer>3M Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>88579Y101</cusip>
  <value>14536</value>
  <shrsOrPrnAmt>
    <sshPrnamt>106482</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>104617</Sole>
    <Shared>0</Shared>
    <None>1865</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Abbott Labs</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>002824100</cusip>
  <value>1999</value>
  <shrsOrPrnAmt>
    <sshPrnamt>25331</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>24276</Sole>
    <Shared>0</Shared>
    <None>1055</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Abbvie Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00287Y109</cusip>
  <value>1331</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17471</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16985</Sole>
    <Shared>0</Shared>
    <None>486</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Accenture Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G1151C101</cusip>
  <value>20292</value>
  <shrsOrPrnAmt>
    <sshPrnamt>124295</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>122431</Sole>
    <Shared>0</Shared>
    <None>1864</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Activision Blizzard Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00507V109</cusip>
  <value>10958</value>
  <shrsOrPrnAmt>
    <sshPrnamt>184222</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>181097</Sole>
    <Shared>0</Shared>
    <None>3125</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Adobe Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00724F101</cusip>
  <value>577</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1812</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1812</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Air Products &amp; Chemicals Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>009158106</cusip>
  <value>843</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4223</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4223</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Akamai Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00971T101</cusip>
  <value>32203</value>
  <shrsOrPrnAmt>
    <sshPrnamt>351986</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>346038</Sole>
    <Shared>0</Shared>
    <None>5948</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Allstate Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>020002101</cusip>
  <value>236</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2575</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2575</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Alphabet Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02079K305</cusip>
  <value>53077</value>
  <shrsOrPrnAmt>
    <sshPrnamt>45679</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>44627</Sole>
    <Shared>0</Shared>
    <None>1052</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Alphabet Inc-C</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02079K107</cusip>
  <value>11729</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10087</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9816</Sole>
    <Shared>0</Shared>
    <None>271</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Altria Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02209S103</cusip>
  <value>420</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10870</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10620</Sole>
    <Shared>0</Shared>
    <None>250</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amazon.com Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>023135106</cusip>
  <value>39971</value>
  <shrsOrPrnAmt>
    <sshPrnamt>20501</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20060</Sole>
    <Shared>0</Shared>
    <None>441</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Express Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>025816109</cusip>
  <value>232</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2713</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2713</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Tower Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>03027X100</cusip>
  <value>77746</value>
  <shrsOrPrnAmt>
    <sshPrnamt>357040</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>348363</Sole>
    <Shared>0</Shared>
    <None>8677</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Water Works Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>030420103</cusip>
  <value>51720</value>
  <shrsOrPrnAmt>
    <sshPrnamt>432586</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>423705</Sole>
    <Shared>0</Shared>
    <None>8881</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ametek Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>031100100</cusip>
  <value>31155</value>
  <shrsOrPrnAmt>
    <sshPrnamt>432582</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>425140</Sole>
    <Shared>0</Shared>
    <None>7442</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amgen Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>031162100</cusip>
  <value>1536</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7575</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7118</Sole>
    <Shared>0</Shared>
    <None>457</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amphenol Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>032095101</cusip>
  <value>31787</value>
  <shrsOrPrnAmt>
    <sshPrnamt>436153</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>428485</Sole>
    <Shared>0</Shared>
    <None>7668</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ansys Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>03662Q105</cusip>
  <value>20533</value>
  <shrsOrPrnAmt>
    <sshPrnamt>88325</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>87425</Sole>
    <Shared>0</Shared>
    <None>900</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Aon PLC</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G0408V102</cusip>
  <value>23487</value>
  <shrsOrPrnAmt>
    <sshPrnamt>142313</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>140535</Sole>
    <Shared>0</Shared>
    <None>1778</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Apple Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>037833100</cusip>
  <value>91722</value>
  <shrsOrPrnAmt>
    <sshPrnamt>360697</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>352252</Sole>
    <Shared>0</Shared>
    <None>8445</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Applied Materials Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>038222105</cusip>
  <value>203</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4426</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4426</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Assurant Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>04621X108</cusip>
  <value>488</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4690</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4690</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>AT&amp;T Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00206R102</cusip>
  <value>1473</value>
  <shrsOrPrnAmt>
    <sshPrnamt>50526</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>48191</Sole>
    <Shared>0</Shared>
    <None>2335</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Automatic Data Processing Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>053015103</cusip>
  <value>7488</value>
  <shrsOrPrnAmt>
    <sshPrnamt>54783</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>54005</Sole>
    <Shared>0</Shared>
    <None>778</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bank of America Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>060505104</cusip>
  <value>493</value>
  <shrsOrPrnAmt>
    <sshPrnamt>23228</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>22204</Sole>
    <Shared>0</Shared>
    <None>1024</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Baxter Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>071813109</cusip>
  <value>225</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2772</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2772</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Berkshire Hathaway Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>084670108</cusip>
  <value>272</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Berkshire Hathaway Inc-B</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>084670702</cusip>
  <value>45592</value>
  <shrsOrPrnAmt>
    <sshPrnamt>249366</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>244773</Sole>
    <Shared>0</Shared>
    <None>4593</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Blackrock Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>09247X101</cusip>
  <value>426</value>
  <shrsOrPrnAmt>
    <sshPrnamt>969</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>969</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Blackstone Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>09260D107</cusip>
  <value>409</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8965</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8965</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Boeing Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>097023105</cusip>
  <value>1807</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12115</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11948</Sole>
    <Shared>0</Shared>
    <None>167</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Borgwarner Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>099724106</cusip>
  <value>10990</value>
  <shrsOrPrnAmt>
    <sshPrnamt>450973</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>444032</Sole>
    <Shared>0</Shared>
    <None>6941</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bristol-Myers Squibb Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>110122108</cusip>
  <value>672</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12062</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11712</Sole>
    <Shared>0</Shared>
    <None>350</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Broadcom Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>11135F101</cusip>
  <value>460</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1940</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1940</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Brown Forman Corp-B</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>115637209</cusip>
  <value>1247</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22462</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>22462</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Canadian Natl Railway</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>136375102</cusip>
  <value>215</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2770</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2770</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Caterpillar Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>149123101</cusip>
  <value>217</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1869</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1869</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cerner Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>156782104</cusip>
  <value>39197</value>
  <shrsOrPrnAmt>
    <sshPrnamt>622272</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>612208</Sole>
    <Shared>0</Shared>
    <None>10064</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Chevron Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>166764100</cusip>
  <value>2486</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34308</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33661</Sole>
    <Shared>0</Shared>
    <None>647</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Chubb Ltd</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>H1467J104</cusip>
  <value>29943</value>
  <shrsOrPrnAmt>
    <sshPrnamt>268090</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>264358</Sole>
    <Shared>0</Shared>
    <None>3732</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Church &amp; Dwight Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>171340102</cusip>
  <value>643</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10014</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10014</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cisco Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>17275R102</cusip>
  <value>823</value>
  <shrsOrPrnAmt>
    <sshPrnamt>20947</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20947</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Clorox Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>189054109</cusip>
  <value>1736</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10023</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9956</Sole>
    <Shared>0</Shared>
    <None>67</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CME Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>12572Q105</cusip>
  <value>21729</value>
  <shrsOrPrnAmt>
    <sshPrnamt>125668</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>122988</Sole>
    <Shared>0</Shared>
    <None>2680</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Coca Cola Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>191216100</cusip>
  <value>1300</value>
  <shrsOrPrnAmt>
    <sshPrnamt>29383</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>24383</Sole>
    <Shared>0</Shared>
    <None>5000</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cognizant Tech Solutions Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>192446102</cusip>
  <value>15139</value>
  <shrsOrPrnAmt>
    <sshPrnamt>325785</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>320960</Sole>
    <Shared>0</Shared>
    <None>4825</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Colgate Palmolive Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>194162103</cusip>
  <value>8137</value>
  <shrsOrPrnAmt>
    <sshPrnamt>122621</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>118932</Sole>
    <Shared>0</Shared>
    <None>3689</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Comcast Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>20030N101</cusip>
  <value>4669</value>
  <shrsOrPrnAmt>
    <sshPrnamt>135796</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>133938</Sole>
    <Shared>0</Shared>
    <None>1858</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Conocophillips</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>20825C104</cusip>
  <value>10012</value>
  <shrsOrPrnAmt>
    <sshPrnamt>325073</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>320386</Sole>
    <Shared>0</Shared>
    <None>4687</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Consolidated Edison Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>209115104</cusip>
  <value>503</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6450</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6450</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Constellation Brands Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>21036P108</cusip>
  <value>15425</value>
  <shrsOrPrnAmt>
    <sshPrnamt>107593</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>105613</Sole>
    <Shared>0</Shared>
    <None>1980</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cooper Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>216648402</cusip>
  <value>1476</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5355</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5240</Sole>
    <Shared>0</Shared>
    <None>115</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Copart Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>217204106</cusip>
  <value>212</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3099</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3099</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Costco Wholesale Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>22160K105</cusip>
  <value>32076</value>
  <shrsOrPrnAmt>
    <sshPrnamt>112495</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>111009</Sole>
    <Shared>0</Shared>
    <None>1486</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Covetrus Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>22304C100</cusip>
  <value>85</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10476</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10436</Sole>
    <Shared>0</Shared>
    <None>40</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CSX Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>126408103</cusip>
  <value>201</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3516</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3516</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cullen/Frost Bankers Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>229899109</cusip>
  <value>9862</value>
  <shrsOrPrnAmt>
    <sshPrnamt>176769</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>173654</Sole>
    <Shared>0</Shared>
    <None>3115</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CVS Health Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>126650100</cusip>
  <value>309</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5204</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4904</Sole>
    <Shared>0</Shared>
    <None>300</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Danaher Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>235851102</cusip>
  <value>54572</value>
  <shrsOrPrnAmt>
    <sshPrnamt>394276</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>386789</Sole>
    <Shared>0</Shared>
    <None>7487</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Deere &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>244199105</cusip>
  <value>961</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6953</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6808</Sole>
    <Shared>0</Shared>
    <None>145</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Diageo Plc ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>25243Q205</cusip>
  <value>349</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2742</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2742</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dominion Energy Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>25746U109</cusip>
  <value>297</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4112</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4112</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Duke Energy Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>26441C204</cusip>
  <value>561</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6939</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6939</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dunkin Brands Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>265504100</cusip>
  <value>21922</value>
  <shrsOrPrnAmt>
    <sshPrnamt>412848</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>406721</Sole>
    <Shared>0</Shared>
    <None>6127</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ecolab Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>278865100</cusip>
  <value>31697</value>
  <shrsOrPrnAmt>
    <sshPrnamt>203409</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>199508</Sole>
    <Shared>0</Shared>
    <None>3901</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Eli Lilly &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>532457108</cusip>
  <value>822</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5928</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4743</Sole>
    <Shared>0</Shared>
    <None>1185</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Emerson Electric Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>291011104</cusip>
  <value>1396</value>
  <shrsOrPrnAmt>
    <sshPrnamt>29297</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>29197</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Enterprise Products Partners L</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>293792107</cusip>
  <value>388</value>
  <shrsOrPrnAmt>
    <sshPrnamt>27150</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>26375</Sole>
    <Shared>0</Shared>
    <None>775</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Equinix Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29444U700</cusip>
  <value>3084</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4937</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4894</Sole>
    <Shared>0</Shared>
    <None>43</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Essential Utils Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29670G102</cusip>
  <value>298</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7317</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7317</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Exxon Mobil Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30231G102</cusip>
  <value>14721</value>
  <shrsOrPrnAmt>
    <sshPrnamt>387699</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>373471</Sole>
    <Shared>0</Shared>
    <None>14228</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Facebook Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30303M102</cusip>
  <value>29346</value>
  <shrsOrPrnAmt>
    <sshPrnamt>175934</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>172017</Sole>
    <Shared>0</Shared>
    <None>3917</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Financial Select Sector SPDR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y605</cusip>
  <value>364</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17460</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>17460</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>General Electric Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>369604103</cusip>
  <value>427</value>
  <shrsOrPrnAmt>
    <sshPrnamt>53782</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>52251</Sole>
    <Shared>0</Shared>
    <None>1531</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Gilead Sciences Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>375558103</cusip>
  <value>227</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3032</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2832</Sole>
    <Shared>0</Shared>
    <None>200</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Globe Life Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>37959E102</cusip>
  <value>8516</value>
  <shrsOrPrnAmt>
    <sshPrnamt>118329</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>116482</Sole>
    <Shared>0</Shared>
    <None>1847</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Henry Schein Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>806407102</cusip>
  <value>17419</value>
  <shrsOrPrnAmt>
    <sshPrnamt>344788</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>336158</Sole>
    <Shared>0</Shared>
    <None>8630</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hershey Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>427866108</cusip>
  <value>24630</value>
  <shrsOrPrnAmt>
    <sshPrnamt>185891</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>184161</Sole>
    <Shared>0</Shared>
    <None>1730</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hologic Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>436440101</cusip>
  <value>1974</value>
  <shrsOrPrnAmt>
    <sshPrnamt>56235</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>54535</Sole>
    <Shared>0</Shared>
    <None>1700</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Home Depot Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>437076102</cusip>
  <value>18562</value>
  <shrsOrPrnAmt>
    <sshPrnamt>99416</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>97463</Sole>
    <Shared>0</Shared>
    <None>1953</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Honeywell International Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>438516106</cusip>
  <value>1760</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13157</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>12639</Sole>
    <Shared>0</Shared>
    <None>518</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Idexx Labs Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>45168D104</cusip>
  <value>28949</value>
  <shrsOrPrnAmt>
    <sshPrnamt>119505</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>117020</Sole>
    <Shared>0</Shared>
    <None>2485</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Illinois Tool Wks Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>452308109</cusip>
  <value>706</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4968</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4968</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intel Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>458140100</cusip>
  <value>1730</value>
  <shrsOrPrnAmt>
    <sshPrnamt>31961</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>31651</Sole>
    <Shared>0</Shared>
    <None>310</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intl Business Machines Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>459200101</cusip>
  <value>1078</value>
  <shrsOrPrnAmt>
    <sshPrnamt>9721</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9621</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intuit Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>461202103</cusip>
  <value>41392</value>
  <shrsOrPrnAmt>
    <sshPrnamt>179967</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>178094</Sole>
    <Shared>0</Shared>
    <None>1873</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intuitive Surgical Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46120E602</cusip>
  <value>248</value>
  <shrsOrPrnAmt>
    <sshPrnamt>500</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>500</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco QQQ Trust Series 1 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46090E103</cusip>
  <value>332</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1745</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1519</Sole>
    <Shared>0</Shared>
    <None>226</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco S&amp;P 500 Equal Weight E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46137V357</cusip>
  <value>1106</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13166</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2611</Sole>
    <Shared>0</Shared>
    <None>10555</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core MSCI EAFE ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46432F842</cusip>
  <value>229</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4582</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4155</Sole>
    <Shared>0</Shared>
    <None>427</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core S&amp;P 500 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287200</cusip>
  <value>860</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3327</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3030</Sole>
    <Shared>0</Shared>
    <None>297</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core S&amp;P M/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287507</cusip>
  <value>17056</value>
  <shrsOrPrnAmt>
    <sshPrnamt>118560</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>54179</Sole>
    <Shared>0</Shared>
    <None>64381</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core S&amp;P S/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287804</cusip>
  <value>1145</value>
  <shrsOrPrnAmt>
    <sshPrnamt>20400</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>18055</Sole>
    <Shared>0</Shared>
    <None>2345</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares MSCI EM ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287234</cusip>
  <value>217</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6370</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4648</Sole>
    <Shared>0</Shared>
    <None>1722</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares MSCI Eurozone ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464286608</cusip>
  <value>235</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7701</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7701</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 1000 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287622</cusip>
  <value>5069</value>
  <shrsOrPrnAmt>
    <sshPrnamt>35814</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>27929</Sole>
    <Shared>0</Shared>
    <None>7885</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 1000 Gwth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287614</cusip>
  <value>1037</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6884</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6303</Sole>
    <Shared>0</Shared>
    <None>581</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 2000 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287655</cusip>
  <value>918</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8022</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3373</Sole>
    <Shared>0</Shared>
    <None>4649</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 3000 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287689</cusip>
  <value>72049</value>
  <shrsOrPrnAmt>
    <sshPrnamt>485735</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>485657</Sole>
    <Shared>0</Shared>
    <None>78</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell M/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287499</cusip>
  <value>982</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22739</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14958</Sole>
    <Shared>0</Shared>
    <None>7781</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell M/C Gwth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287481</cusip>
  <value>326</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2683</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2683</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell M/C Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287473</cusip>
  <value>208</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3250</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3187</Sole>
    <Shared>0</Shared>
    <None>63</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell1000 Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287598</cusip>
  <value>383</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3857</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2631</Sole>
    <Shared>0</Shared>
    <None>1226</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares S&amp;P 500 Gwth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287309</cusip>
  <value>283</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1712</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1302</Sole>
    <Shared>0</Shared>
    <None>410</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares S&amp;P 500 Value</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287408</cusip>
  <value>204</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2123</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2123</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares S&amp;P GSCI Commodity ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46428R107</cusip>
  <value>121</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13040</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13040</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Jack Henry &amp; Associates Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>426281101</cusip>
  <value>239</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1540</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1540</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Johnson &amp; Johnson</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>478160104</cusip>
  <value>41228</value>
  <shrsOrPrnAmt>
    <sshPrnamt>314407</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>306037</Sole>
    <Shared>0</Shared>
    <None>8370</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>JP Morgan Chase &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46625H100</cusip>
  <value>21666</value>
  <shrsOrPrnAmt>
    <sshPrnamt>240655</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>237005</Sole>
    <Shared>0</Shared>
    <None>3650</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Keycorp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>493267108</cusip>
  <value>121</value>
  <shrsOrPrnAmt>
    <sshPrnamt>11630</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11630</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Kimberly Clark Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>494368103</cusip>
  <value>1361</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10640</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10640</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>L3 Harris Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>502431109</cusip>
  <value>274</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1519</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1504</Sole>
    <Shared>0</Shared>
    <None>15</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Linde Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G5494J103</cusip>
  <value>33821</value>
  <shrsOrPrnAmt>
    <sshPrnamt>195494</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>192572</Sole>
    <Shared>0</Shared>
    <None>2922</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lockheed Martin Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>539830109</cusip>
  <value>295</value>
  <shrsOrPrnAmt>
    <sshPrnamt>870</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>870</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lowe&apos;s Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>548661107</cusip>
  <value>1185</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13772</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13772</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Magellan Midstream Partners LP</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>559080106</cusip>
  <value>260</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7115</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6715</Sole>
    <Shared>0</Shared>
    <None>400</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Mastercard Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>57636Q104</cusip>
  <value>648</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2683</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2568</Sole>
    <Shared>0</Shared>
    <None>115</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>McCormick &amp; Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>579780206</cusip>
  <value>8271</value>
  <shrsOrPrnAmt>
    <sshPrnamt>58573</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>58063</Sole>
    <Shared>0</Shared>
    <None>510</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>McDonalds Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>580135101</cusip>
  <value>2474</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14963</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14163</Sole>
    <Shared>0</Shared>
    <None>800</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Medtronic Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G5960L103</cusip>
  <value>30754</value>
  <shrsOrPrnAmt>
    <sshPrnamt>341024</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>336633</Sole>
    <Shared>0</Shared>
    <None>4391</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Merck &amp; Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>58933Y105</cusip>
  <value>22012</value>
  <shrsOrPrnAmt>
    <sshPrnamt>286096</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>280855</Sole>
    <Shared>0</Shared>
    <None>5241</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Mettler-Toledo Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>592688105</cusip>
  <value>39996</value>
  <shrsOrPrnAmt>
    <sshPrnamt>57922</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56781</Sole>
    <Shared>0</Shared>
    <None>1141</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Microchip Technology Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>595017104</cusip>
  <value>38226</value>
  <shrsOrPrnAmt>
    <sshPrnamt>563798</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>553515</Sole>
    <Shared>0</Shared>
    <None>10283</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Microsoft Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>594918104</cusip>
  <value>48926</value>
  <shrsOrPrnAmt>
    <sshPrnamt>310226</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>304321</Sole>
    <Shared>0</Shared>
    <None>5905</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Mondelez Intl Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>609207105</cusip>
  <value>408</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8138</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8138</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Netflix Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>64110L106</cusip>
  <value>201</value>
  <shrsOrPrnAmt>
    <sshPrnamt>535</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>520</Sole>
    <Shared>0</Shared>
    <None>15</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Newmont Corporation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>651639106</cusip>
  <value>226</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5000</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5000</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nextera Energy Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>65339F101</cusip>
  <value>42968</value>
  <shrsOrPrnAmt>
    <sshPrnamt>178573</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>175890</Sole>
    <Shared>0</Shared>
    <None>2683</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nike Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>654106103</cusip>
  <value>10761</value>
  <shrsOrPrnAmt>
    <sshPrnamt>130052</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>128143</Sole>
    <Shared>0</Shared>
    <None>1909</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nordson Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>655663102</cusip>
  <value>10157</value>
  <shrsOrPrnAmt>
    <sshPrnamt>75195</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>73260</Sole>
    <Shared>0</Shared>
    <None>1935</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Norfolk Southern Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>655844108</cusip>
  <value>1107</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7580</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7185</Sole>
    <Shared>0</Shared>
    <None>395</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Northern Trust Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>665859104</cusip>
  <value>15671</value>
  <shrsOrPrnAmt>
    <sshPrnamt>207676</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>204484</Sole>
    <Shared>0</Shared>
    <None>3192</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Northrop Grumman Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>666807102</cusip>
  <value>17219</value>
  <shrsOrPrnAmt>
    <sshPrnamt>56911</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56330</Sole>
    <Shared>0</Shared>
    <None>581</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Novo-Nordisk A/S ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>670100205</cusip>
  <value>270</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4491</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4491</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>NVR Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>62944T105</cusip>
  <value>411</value>
  <shrsOrPrnAmt>
    <sshPrnamt>160</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>160</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Omnicom Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>681919106</cusip>
  <value>728</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13266</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13116</Sole>
    <Shared>0</Shared>
    <None>150</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Oracle Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>68389X105</cusip>
  <value>712</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14742</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14742</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Oshkosh Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>688239201</cusip>
  <value>23255</value>
  <shrsOrPrnAmt>
    <sshPrnamt>361502</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>353671</Sole>
    <Shared>0</Shared>
    <None>7831</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Palo Alto Networks Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>697435105</cusip>
  <value>14225</value>
  <shrsOrPrnAmt>
    <sshPrnamt>86758</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>85115</Sole>
    <Shared>0</Shared>
    <None>1643</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Paychex Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>704326107</cusip>
  <value>220</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3490</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1490</Sole>
    <Shared>0</Shared>
    <None>2000</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Paypal Holdings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>70450Y103</cusip>
  <value>344</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3597</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3294</Sole>
    <Shared>0</Shared>
    <None>303</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pepsico Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>713448108</cusip>
  <value>39776</value>
  <shrsOrPrnAmt>
    <sshPrnamt>331190</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>326486</Sole>
    <Shared>0</Shared>
    <None>4703</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pfizer Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>717081103</cusip>
  <value>4712</value>
  <shrsOrPrnAmt>
    <sshPrnamt>144362</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>141819</Sole>
    <Shared>0</Shared>
    <None>2543</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Philip Morris Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>718172109</cusip>
  <value>523</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7170</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6970</Sole>
    <Shared>0</Shared>
    <None>200</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Phillips 66</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>718546104</cusip>
  <value>22224</value>
  <shrsOrPrnAmt>
    <sshPrnamt>414241</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>409713</Sole>
    <Shared>0</Shared>
    <None>4528</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>PNC Financial Services Group</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>693475105</cusip>
  <value>229</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2393</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2393</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Procter &amp; Gamble Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>742718109</cusip>
  <value>12456</value>
  <shrsOrPrnAmt>
    <sshPrnamt>113240</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>103810</Sole>
    <Shared>0</Shared>
    <None>9430</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Prudential Financial Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>744320102</cusip>
  <value>201</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3858</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3858</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Quaker Chemical Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>747316107</cusip>
  <value>4221</value>
  <shrsOrPrnAmt>
    <sshPrnamt>33425</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33242</Sole>
    <Shared>0</Shared>
    <None>183</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Qualcomm Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>747525103</cusip>
  <value>24306</value>
  <shrsOrPrnAmt>
    <sshPrnamt>359287</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>352658</Sole>
    <Shared>0</Shared>
    <None>6629</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Raytheon Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>755111507</cusip>
  <value>322</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2457</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2445</Sole>
    <Shared>0</Shared>
    <None>12</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>RBC Bearings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>75524B104</cusip>
  <value>10326</value>
  <shrsOrPrnAmt>
    <sshPrnamt>91554</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>89594</Sole>
    <Shared>0</Shared>
    <None>1960</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Rockwell Automation Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>773903109</cusip>
  <value>10785</value>
  <shrsOrPrnAmt>
    <sshPrnamt>71469</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>70499</Sole>
    <Shared>0</Shared>
    <None>970</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Roper Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>776696106</cusip>
  <value>39208</value>
  <shrsOrPrnAmt>
    <sshPrnamt>125743</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>123370</Sole>
    <Shared>0</Shared>
    <None>2373</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Royal Dutch Shell ADR-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>780259206</cusip>
  <value>430</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12326</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>12146</Sole>
    <Shared>0</Shared>
    <None>180</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Salesforce.Com Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>79466L302</cusip>
  <value>358</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2486</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2251</Sole>
    <Shared>0</Shared>
    <None>235</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SBA Communications Corp-REIT</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78410G104</cusip>
  <value>229</value>
  <shrsOrPrnAmt>
    <sshPrnamt>850</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>850</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Seagate Technology</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G7945M107</cusip>
  <value>211</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4324</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4324</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SEI Investments Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>784117103</cusip>
  <value>5030</value>
  <shrsOrPrnAmt>
    <sshPrnamt>108555</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>107120</Sole>
    <Shared>0</Shared>
    <None>1435</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Sherwin-Williams Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>824348106</cusip>
  <value>19995</value>
  <shrsOrPrnAmt>
    <sshPrnamt>43513</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>42985</Sole>
    <Shared>0</Shared>
    <None>528</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Sirius XM Holdings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>82968B103</cusip>
  <value>57</value>
  <shrsOrPrnAmt>
    <sshPrnamt>11500</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11500</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Smucker JM Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>832696405</cusip>
  <value>321</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2892</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2892</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SPDR S&amp;P 500 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78462F103</cusip>
  <value>15973</value>
  <shrsOrPrnAmt>
    <sshPrnamt>61970</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>27099</Sole>
    <Shared>0</Shared>
    <None>34871</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SPDR S&amp;P M/C 400 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78467Y107</cusip>
  <value>2166</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8239</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4184</Sole>
    <Shared>0</Shared>
    <None>4055</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Starbucks Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>855244109</cusip>
  <value>4713</value>
  <shrsOrPrnAmt>
    <sshPrnamt>71686</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>70856</Sole>
    <Shared>0</Shared>
    <None>830</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Stryker Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>863667101</cusip>
  <value>18255</value>
  <shrsOrPrnAmt>
    <sshPrnamt>109649</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>107411</Sole>
    <Shared>0</Shared>
    <None>2238</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Sysco Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>871829107</cusip>
  <value>223</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4881</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4881</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>T Rowe Price Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>74144T108</cusip>
  <value>14798</value>
  <shrsOrPrnAmt>
    <sshPrnamt>151537</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>149622</Sole>
    <Shared>0</Shared>
    <None>1915</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Technology Select Sector SPDR </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y803</cusip>
  <value>443</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5513</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5503</Sole>
    <Shared>0</Shared>
    <None>10</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Teleflex Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>879369106</cusip>
  <value>26267</value>
  <shrsOrPrnAmt>
    <sshPrnamt>89691</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>88576</Sole>
    <Shared>0</Shared>
    <None>1115</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Texas Instruments Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>882508104</cusip>
  <value>217</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2175</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2175</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Thermo Fisher Scientific Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>883556102</cusip>
  <value>43507</value>
  <shrsOrPrnAmt>
    <sshPrnamt>153408</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>151582</Sole>
    <Shared>0</Shared>
    <None>1826</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>TJX Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>872540109</cusip>
  <value>38479</value>
  <shrsOrPrnAmt>
    <sshPrnamt>804822</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>792308</Sole>
    <Shared>0</Shared>
    <None>12514</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Toll Brothers Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>889478103</cusip>
  <value>3375</value>
  <shrsOrPrnAmt>
    <sshPrnamt>175336</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>174366</Sole>
    <Shared>0</Shared>
    <None>970</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Toronto-Dominion Bank</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>891160509</cusip>
  <value>508</value>
  <shrsOrPrnAmt>
    <sshPrnamt>11995</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11961</Sole>
    <Shared>0</Shared>
    <None>34</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Tractor Supply Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>892356106</cusip>
  <value>4928</value>
  <shrsOrPrnAmt>
    <sshPrnamt>58283</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56678</Sole>
    <Shared>0</Shared>
    <None>1605</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Travelers Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>89417E109</cusip>
  <value>304</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3061</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3061</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Truist Financial Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>89832Q109</cusip>
  <value>337</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10927</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10897</Sole>
    <Shared>0</Shared>
    <None>30</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Unilever NV-NY Shares</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>904784709</cusip>
  <value>313</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6419</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6419</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Unilever Plc ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>904767704</cusip>
  <value>32217</value>
  <shrsOrPrnAmt>
    <sshPrnamt>637084</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>626801</Sole>
    <Shared>0</Shared>
    <None>10283</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Union Pacific Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>907818108</cusip>
  <value>15382</value>
  <shrsOrPrnAmt>
    <sshPrnamt>109063</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>106719</Sole>
    <Shared>0</Shared>
    <None>2344</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>United Technologies Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>913017109</cusip>
  <value>26915</value>
  <shrsOrPrnAmt>
    <sshPrnamt>285326</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>278998</Sole>
    <Shared>0</Shared>
    <None>6328</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Unitedhealth Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>91324P102</cusip>
  <value>16808</value>
  <shrsOrPrnAmt>
    <sshPrnamt>67400</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>66424</Sole>
    <Shared>0</Shared>
    <None>976</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>US Bancorp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>902973304</cusip>
  <value>27992</value>
  <shrsOrPrnAmt>
    <sshPrnamt>812544</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>796895</Sole>
    <Shared>0</Shared>
    <None>15649</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Dvd Appreciation ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921908844</cusip>
  <value>271</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2620</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2220</Sole>
    <Shared>0</Shared>
    <None>400</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Gwth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908736</cusip>
  <value>239</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1527</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1265</Sole>
    <Shared>0</Shared>
    <None>262</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard High Dvd Yield ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921946406</cusip>
  <value>393</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5550</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5507</Sole>
    <Shared>0</Shared>
    <None>43</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard REIT ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908553</cusip>
  <value>491</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7031</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6399</Sole>
    <Shared>0</Shared>
    <None>632</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S&amp;P 500 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908363</cusip>
  <value>1095</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4624</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4447</Sole>
    <Shared>0</Shared>
    <None>177</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S&amp;P M/C 400 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921932885</cusip>
  <value>229</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2349</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2349</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908751</cusip>
  <value>1864</value>
  <shrsOrPrnAmt>
    <sshPrnamt>16150</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5631</Sole>
    <Shared>0</Shared>
    <None>10519</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Total Stock Mkt ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908769</cusip>
  <value>4196</value>
  <shrsOrPrnAmt>
    <sshPrnamt>32549</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14027</Sole>
    <Shared>0</Shared>
    <None>18522</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Verizon Communications Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92343V104</cusip>
  <value>2362</value>
  <shrsOrPrnAmt>
    <sshPrnamt>43965</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>41977</Sole>
    <Shared>0</Shared>
    <None>1988</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vermillion Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92407M206</cusip>
  <value>16</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19810</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19810</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>VF Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>918204108</cusip>
  <value>1164</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21516</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21406</Sole>
    <Shared>0</Shared>
    <None>110</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Visa Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92826C839</cusip>
  <value>42710</value>
  <shrsOrPrnAmt>
    <sshPrnamt>265082</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>261936</Sole>
    <Shared>0</Shared>
    <None>3146</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Wal-Mart Stores Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>931142103</cusip>
  <value>317</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2791</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2791</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Walgreens Boots Alliance Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>931427108</cusip>
  <value>213</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4650</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4250</Sole>
    <Shared>0</Shared>
    <None>400</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Walt Disney Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>254687106</cusip>
  <value>44098</value>
  <shrsOrPrnAmt>
    <sshPrnamt>456506</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>449398</Sole>
    <Shared>0</Shared>
    <None>7108</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Waste Connections Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>94106B101</cusip>
  <value>42689</value>
  <shrsOrPrnAmt>
    <sshPrnamt>550826</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>541781</Sole>
    <Shared>0</Shared>
    <None>9045</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Waste Management Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>94106L109</cusip>
  <value>202</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2187</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2187</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>WEX Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>96208T104</cusip>
  <value>10511</value>
  <shrsOrPrnAmt>
    <sshPrnamt>100536</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>98706</Sole>
    <Shared>0</Shared>
    <None>1830</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Weyerhaeuser Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>962166104</cusip>
  <value>212</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12493</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>12493</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Xylem Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98419M100</cusip>
  <value>230</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3537</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3537</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Yum Brands Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>988498101</cusip>
  <value>335</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4888</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4788</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Yum China Holdings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98850P109</cusip>
  <value>294</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6907</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6907</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares MSCI EAFE ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>464287465</cusip>
  <value>1681</value>
  <shrsOrPrnAmt>
    <sshPrnamt>31443</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>30979</Sole>
    <Shared>0</Shared>
    <None>464</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard FTSE All-World Ex-US </nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>922042775</cusip>
  <value>25848</value>
  <shrsOrPrnAmt>
    <sshPrnamt>630142</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>593942</Sole>
    <Shared>0</Shared>
    <None>36200</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard FTSE Dev Mkts ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>921943858</cusip>
  <value>46173</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1384911</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1351930</Sole>
    <Shared>0</Shared>
    <None>32981</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard FTSE EM ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>922042858</cusip>
  <value>17622</value>
  <shrsOrPrnAmt>
    <sshPrnamt>525237</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>480787</Sole>
    <Shared>0</Shared>
    <None>44450</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Wells Fargo New</nameOfIssuer>
  <titleOfClass>PERP PFD CNV A</titleOfClass>
  <cusip>949746804</cusip>
  <value>255</value>
  <shrsOrPrnAmt>
    <sshPrnamt>200</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>200</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bank Amer Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>060505682</cusip>
  <value>392</value>
  <shrsOrPrnAmt>
    <sshPrnamt>310</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>310</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco Bulletshares 2020 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J502</cusip>
  <value>5986</value>
  <shrsOrPrnAmt>
    <sshPrnamt>284910</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>182393</Sole>
    <Shared>0</Shared>
    <None>102517</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco Bulletshares 2021 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J700</cusip>
  <value>6971</value>
  <shrsOrPrnAmt>
    <sshPrnamt>332405</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>200647</Sole>
    <Shared>0</Shared>
    <None>131758</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco Bulletshares 2022 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J882</cusip>
  <value>7026</value>
  <shrsOrPrnAmt>
    <sshPrnamt>331712</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>198089</Sole>
    <Shared>0</Shared>
    <None>133623</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco Bulletshares 2023 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J866</cusip>
  <value>5979</value>
  <shrsOrPrnAmt>
    <sshPrnamt>288505</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>171181</Sole>
    <Shared>0</Shared>
    <None>117324</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco Bulletshares 2024 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J841</cusip>
  <value>3721</value>
  <shrsOrPrnAmt>
    <sshPrnamt>180198</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>93135</Sole>
    <Shared>0</Shared>
    <None>87063</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco Bulletshares 2025 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J825</cusip>
  <value>1350</value>
  <shrsOrPrnAmt>
    <sshPrnamt>65636</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38916</Sole>
    <Shared>0</Shared>
    <None>26720</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco Bulletshares 2026 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J791</cusip>
  <value>705</value>
  <shrsOrPrnAmt>
    <sshPrnamt>35793</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>25473</Sole>
    <Shared>0</Shared>
    <None>10320</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core 1-5 Year USD Bond</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46432F859</cusip>
  <value>221</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4370</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4370</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core U S Agg Bond ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464287226</cusip>
  <value>252</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2188</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1718</Sole>
    <Shared>0</Shared>
    <None>470</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares I/T Corporate Bond ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464288638</cusip>
  <value>3320</value>
  <shrsOrPrnAmt>
    <sshPrnamt>60450</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>45465</Sole>
    <Shared>0</Shared>
    <None>14985</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Iboxx IG Corp Bond ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464287242</cusip>
  <value>272</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2205</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1970</Sole>
    <Shared>0</Shared>
    <None>235</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares S/T Corporate Bond ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464288646</cusip>
  <value>4598</value>
  <shrsOrPrnAmt>
    <sshPrnamt>87818</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>76592</Sole>
    <Shared>0</Shared>
    <None>11226</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/T Corp Bond ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>92206C409</cusip>
  <value>281</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3557</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2967</Sole>
    <Shared>0</Shared>
    <None>590</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Total Bond Mkt ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>921937835</cusip>
  <value>919</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10763</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3783</Sole>
    <Shared>0</Shared>
    <None>6980</None>
  </votingAuthority>
</infoTable>
</informationTable>
