<?xml version="1.0" encoding="utf-8"?>
<informationTable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable">
  <infoTable>
    <nameOfIssuer>AMAZON COM INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>023135106</cusip>
    <value>26964717</value>
    <shrsOrPrnAmt>
      <sshPrnamt>129470</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>122255</Sole>
      <Shared>0</Shared>
      <None>7215</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>STARBUCKS CORP COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>855244109</cusip>
    <value>16219062</value>
    <shrsOrPrnAmt>
      <sshPrnamt>181037</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>172624</Sole>
      <Shared>0</Shared>
      <None>8412</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>JOHNSON &amp; JOHNSON COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>478160104</cusip>
    <value>1568535</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6417</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>6416</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CORPAY INC COM SHS</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>219948106</cusip>
    <value>22308457</value>
    <shrsOrPrnAmt>
      <sshPrnamt>76664</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>72732</Sole>
      <Shared>0</Shared>
      <None>3932</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD TOTAL STOCK MARKET ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922908769</cusip>
    <value>407429</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1270</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>1270</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FORTIVE CORP COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>34959J108</cusip>
    <value>1594939</value>
    <shrsOrPrnAmt>
      <sshPrnamt>28852</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>28852</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES SHORT-TERM NATIONAL MUNI BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464288158</cusip>
    <value>718875</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6750</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>6750</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ILLINOIS TOOL WKS INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>452308109</cusip>
    <value>12240540</value>
    <shrsOrPrnAmt>
      <sshPrnamt>47027</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>45667</Sole>
      <Shared>0</Shared>
      <None>1359</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>TYLER TECHNOLOGIES INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>902252105</cusip>
    <value>19593723</value>
    <shrsOrPrnAmt>
      <sshPrnamt>57228</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>54452</Sole>
      <Shared>0</Shared>
      <None>2776</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PEPSICO INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>713448108</cusip>
    <value>541341</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3486</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>3486</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES 1-3 YEAR TREASURY BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464287457</cusip>
    <value>11918980</value>
    <shrsOrPrnAmt>
      <sshPrnamt>144350</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>140375</Sole>
      <Shared>0</Shared>
      <None>3975</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AUTOMATIC DATA PROCESSING INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>053015103</cusip>
    <value>1505970</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7412</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>7412</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SCHWAB U.S. LARGE-CAP ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>808524201</cusip>
    <value>222306</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8670</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>8670</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>STATE STREET SPDR PORTFOLIO SHORT TERM CORPORATE BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>78464A474</cusip>
    <value>1312465</value>
    <shrsOrPrnAmt>
      <sshPrnamt>43647</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>37647</Sole>
      <Shared>0</Shared>
      <None>6000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BERKSHIRE HATHAWAY INC DEL CL B NEW</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>084670702</cusip>
    <value>822786</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1717</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>1717</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ADOBE INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>00724F101</cusip>
    <value>13725269</value>
    <shrsOrPrnAmt>
      <sshPrnamt>56464</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>54217</Sole>
      <Shared>0</Shared>
      <None>2247</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD SHORT-TERM CORPORATE BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>92206C409</cusip>
    <value>53771217</value>
    <shrsOrPrnAmt>
      <sshPrnamt>678330</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>649651</Sole>
      <Shared>0</Shared>
      <None>28678</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ALPHABET INC CAP STK CL A</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>02079K305</cusip>
    <value>9989259</value>
    <shrsOrPrnAmt>
      <sshPrnamt>34738</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>33223</Sole>
      <Shared>0</Shared>
      <None>1515</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FISERV INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>337738108</cusip>
    <value>6401711</value>
    <shrsOrPrnAmt>
      <sshPrnamt>114726</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>109751</Sole>
      <Shared>0</Shared>
      <None>4975</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MICROSOFT CORP COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>594918104</cusip>
    <value>41500199</value>
    <shrsOrPrnAmt>
      <sshPrnamt>112111</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>107245</Sole>
      <Shared>0</Shared>
      <None>4866</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SS&amp;C TECH HLDGS COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>78467J100</cusip>
    <value>18493031</value>
    <shrsOrPrnAmt>
      <sshPrnamt>273687</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>260517</Sole>
      <Shared>0</Shared>
      <None>13170</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD INTERMEDIATE-TERM TREASURY ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>92206C706</cusip>
    <value>17609996</value>
    <shrsOrPrnAmt>
      <sshPrnamt>295718</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>279286</Sole>
      <Shared>0</Shared>
      <None>16431</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD SHORT-TERM TREASURY ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>92206C102</cusip>
    <value>22857177</value>
    <shrsOrPrnAmt>
      <sshPrnamt>390454</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>378492</Sole>
      <Shared>0</Shared>
      <None>11962</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ALCON AG ORD SHS</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>H01301128</cusip>
    <value>548849</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7284</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>7284</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD S&amp;P 500 ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922908363</cusip>
    <value>666505</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1115</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>1115</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ILLUMINA INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>452327109</cusip>
    <value>15549002</value>
    <shrsOrPrnAmt>
      <sshPrnamt>126148</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>118379</Sole>
      <Shared>0</Shared>
      <None>7769</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>WABTEC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>929740108</cusip>
    <value>34381697</value>
    <shrsOrPrnAmt>
      <sshPrnamt>137576</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>130208</Sole>
      <Shared>0</Shared>
      <None>7368</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>API GROUP CORP COM STK</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>00187Y100</cusip>
    <value>23462984</value>
    <shrsOrPrnAmt>
      <sshPrnamt>579047</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>544671</Sole>
      <Shared>0</Shared>
      <None>34376</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES FLOATING RATE BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>46429B655</cusip>
    <value>603350</value>
    <shrsOrPrnAmt>
      <sshPrnamt>11842</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>11842</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>QUANTA SVCS INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>74762E102</cusip>
    <value>15660246</value>
    <shrsOrPrnAmt>
      <sshPrnamt>28524</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>26828</Sole>
      <Shared>0</Shared>
      <None>1696</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SNOWFLAKE INC COM SHS</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>833445109</cusip>
    <value>15535063</value>
    <shrsOrPrnAmt>
      <sshPrnamt>103004</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>97653</Sole>
      <Shared>0</Shared>
      <None>5351</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD ULTRA-SHORT BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>92203C303</cusip>
    <value>4574246</value>
    <shrsOrPrnAmt>
      <sshPrnamt>91880</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>91880</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VISA INC COM CL A</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>92826C839</cusip>
    <value>207034</value>
    <shrsOrPrnAmt>
      <sshPrnamt>685</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>685</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD VALUE ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922908744</cusip>
    <value>375134</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1912</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>1912</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD GROWTH ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922908736</cusip>
    <value>487074</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1115</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>1115</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ZEBRA TECHNOLOGIES CORPORATION CL A</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>989207105</cusip>
    <value>11129747</value>
    <shrsOrPrnAmt>
      <sshPrnamt>53232</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>49526</Sole>
      <Shared>0</Shared>
      <None>3706</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SERVICENOW INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>81762P102</cusip>
    <value>21130391</value>
    <shrsOrPrnAmt>
      <sshPrnamt>202108</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>192114</Sole>
      <Shared>0</Shared>
      <None>9994</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BROADCOM INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>11135F101</cusip>
    <value>297130</value>
    <shrsOrPrnAmt>
      <sshPrnamt>960</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>960</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD SHORT-TERM INFLATION-PROTECTED SECURITIES ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922020805</cusip>
    <value>533116</value>
    <shrsOrPrnAmt>
      <sshPrnamt>10673</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>10673</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NVIDIA CORPORATION COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>67066G104</cusip>
    <value>58079386</value>
    <shrsOrPrnAmt>
      <sshPrnamt>333024</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>316221</Sole>
      <Shared>0</Shared>
      <None>16803</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES 1-5 YEAR INVESTMENT GRADE CORPORATE BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464288646</cusip>
    <value>6445117</value>
    <shrsOrPrnAmt>
      <sshPrnamt>122624</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>116194</Sole>
      <Shared>0</Shared>
      <None>6430</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ABBVIE INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>00287Y109</cusip>
    <value>457381</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2103</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>2103</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD SHORT-TERM TAX EXEMPT BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>921935870</cusip>
    <value>7719005</value>
    <shrsOrPrnAmt>
      <sshPrnamt>76320</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>68820</Sole>
      <Shared>0</Shared>
      <None>7500</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD TOTAL BOND MARKET ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>921937835</cusip>
    <value>4875704</value>
    <shrsOrPrnAmt>
      <sshPrnamt>66210</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>55685</Sole>
      <Shared>0</Shared>
      <None>10525</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PTC INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>69370C100</cusip>
    <value>26474642</value>
    <shrsOrPrnAmt>
      <sshPrnamt>185800</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>177454</Sole>
      <Shared>0</Shared>
      <None>8346</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>STRYKER CORPORATION COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>863667101</cusip>
    <value>24899893</value>
    <shrsOrPrnAmt>
      <sshPrnamt>75778</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>71942</Sole>
      <Shared>0</Shared>
      <None>3836</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>QUALCOMM INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>747525103</cusip>
    <value>20707695</value>
    <shrsOrPrnAmt>
      <sshPrnamt>160799</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>152871</Sole>
      <Shared>0</Shared>
      <None>7928</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FASTENAL CO COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>311900104</cusip>
    <value>6110450</value>
    <shrsOrPrnAmt>
      <sshPrnamt>131691</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>131690</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>RESMED INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>761152107</cusip>
    <value>25682532</value>
    <shrsOrPrnAmt>
      <sshPrnamt>114409</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>109421</Sole>
      <Shared>0</Shared>
      <None>4988</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VERALTO CORP COM SHS</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>92338C103</cusip>
    <value>890832</value>
    <shrsOrPrnAmt>
      <sshPrnamt>10075</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>10075</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MCDONALDS CORP COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>580135101</cusip>
    <value>345698</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1112</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>1112</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AMETEK INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>031100100</cusip>
    <value>5066184</value>
    <shrsOrPrnAmt>
      <sshPrnamt>23634</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>23634</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD INTERMEDIATE-TERM BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>921937819</cusip>
    <value>652943</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8460</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>8185</Sole>
      <Shared>0</Shared>
      <None>275</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VEEVA SYS INC CL A COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>922475108</cusip>
    <value>16971918</value>
    <shrsOrPrnAmt>
      <sshPrnamt>96618</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>91014</Sole>
      <Shared>0</Shared>
      <None>5604</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES CORE S&amp;P 500 ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464287200</cusip>
    <value>889672</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1362</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>1362</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD SHORT DURATION TAX-EXEMPT BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922907696</cusip>
    <value>19536648</value>
    <shrsOrPrnAmt>
      <sshPrnamt>256084</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>246264</Sole>
      <Shared>0</Shared>
      <None>9820</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD CORE TAX-EXEMPT BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922907712</cusip>
    <value>2063619</value>
    <shrsOrPrnAmt>
      <sshPrnamt>27460</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>25460</Sole>
      <Shared>0</Shared>
      <None>2000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ECOLAB INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>278865100</cusip>
    <value>29641012</value>
    <shrsOrPrnAmt>
      <sshPrnamt>111424</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>106038</Sole>
      <Shared>0</Shared>
      <None>5386</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>IDEXX LABS INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>45168D104</cusip>
    <value>21705811</value>
    <shrsOrPrnAmt>
      <sshPrnamt>38630</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>36641</Sole>
      <Shared>0</Shared>
      <None>1989</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>JPMORGAN CHASE &amp; CO COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>46625H100</cusip>
    <value>220915</value>
    <shrsOrPrnAmt>
      <sshPrnamt>751</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>751</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD 0-3 MONTH TREASURY BILL ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922040845</cusip>
    <value>2238332</value>
    <shrsOrPrnAmt>
      <sshPrnamt>29588</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>29053</Sole>
      <Shared>0</Shared>
      <None>535</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD ULTRA-SHORT TREASURY ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922040852</cusip>
    <value>3933715</value>
    <shrsOrPrnAmt>
      <sshPrnamt>51992</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>50867</Sole>
      <Shared>0</Shared>
      <None>1125</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES NATIONAL MUNI BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464288414</cusip>
    <value>5687411</value>
    <shrsOrPrnAmt>
      <sshPrnamt>53579</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>52079</Sole>
      <Shared>0</Shared>
      <None>1500</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DANAHER CORP DEL COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>235851102</cusip>
    <value>25524521</value>
    <shrsOrPrnAmt>
      <sshPrnamt>134623</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>128196</Sole>
      <Shared>0</Shared>
      <None>6427</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>TJX COS INC NEW COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>872540109</cusip>
    <value>30813157</value>
    <shrsOrPrnAmt>
      <sshPrnamt>192944</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>184713</Sole>
      <Shared>0</Shared>
      <None>8231</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES 3-7 YEAR TREASURY BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464288661</cusip>
    <value>17026928</value>
    <shrsOrPrnAmt>
      <sshPrnamt>143566</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>138731</Sole>
      <Shared>0</Shared>
      <None>4835</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ORACLE CORP COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>68389X105</cusip>
    <value>25677756</value>
    <shrsOrPrnAmt>
      <sshPrnamt>174548</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>166397</Sole>
      <Shared>0</Shared>
      <None>8151</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>RALLIANT CORP COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>750940108</cusip>
    <value>413113</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9933</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>9333</Sole>
      <Shared>0</Shared>
      <None>600</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ALPHABET INC CAP STK CL C</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>02079K107</cusip>
    <value>49872619</value>
    <shrsOrPrnAmt>
      <sshPrnamt>173857</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>165117</Sole>
      <Shared>0</Shared>
      <None>8740</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AXON ENTERPRISE INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>05464C101</cusip>
    <value>5269978</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12409</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>11884</Sole>
      <Shared>0</Shared>
      <None>525</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES INTERMEDIATE GOVERNMENT/CREDIT BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464288612</cusip>
    <value>1591666</value>
    <shrsOrPrnAmt>
      <sshPrnamt>14920</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>14254</Sole>
      <Shared>0</Shared>
      <None>666</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ROPER TECHNOLOGIES INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>776696106</cusip>
    <value>16755625</value>
    <shrsOrPrnAmt>
      <sshPrnamt>47351</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>44989</Sole>
      <Shared>0</Shared>
      <None>2362</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SYNOPSYS INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>871607107</cusip>
    <value>11074876</value>
    <shrsOrPrnAmt>
      <sshPrnamt>27933</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>26321</Sole>
      <Shared>0</Shared>
      <None>1612</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SHOPIFY INC CL A SUB VTG SHS</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>82509L107</cusip>
    <value>5786639</value>
    <shrsOrPrnAmt>
      <sshPrnamt>48783</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>45040</Sole>
      <Shared>0</Shared>
      <None>3743</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PAYPAL HLDGS INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>70450Y103</cusip>
    <value>895328</value>
    <shrsOrPrnAmt>
      <sshPrnamt>19795</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>19795</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VANGUARD TAX-EXEMPT BOND ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>922907746</cusip>
    <value>3628250</value>
    <shrsOrPrnAmt>
      <sshPrnamt>72725</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>55225</Sole>
      <Shared>0</Shared>
      <None>17500</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>APPLE INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>037833100</cusip>
    <value>1730658</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6819</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>6819</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>WEC ENERGY GROUP INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>92939U106</cusip>
    <value>299381</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2586</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>2586</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ABBOTT LABORATORIES COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>002824100</cusip>
    <value>257291</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2506</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>2506</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BOOKING HOLDINGS INC COM</nameOfIssuer>
    <titleOfClass>Stock</titleOfClass>
    <cusip>09857L108</cusip>
    <value>22361688</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5311</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <otherManager>0</otherManager>
    <votingAuthority>
      <Sole>5041</Sole>
      <Shared>0</Shared>
      <None>270</None>
    </votingAuthority>
  </infoTable>
</informationTable>