<?xml version="1.0" encoding="utf-8"?>
<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>6300707</value>
    <shrsOrPrnAmt>
      <sshPrnamt>43384</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>39789</Sole>
      <Shared>0</Shared>
      <None>3595</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>APA Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>03743q108</cusip>
    <value>297080</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7000</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ASML Holding NV ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>N07059210</cusip>
    <value>15089162</value>
    <shrsOrPrnAmt>
      <sshPrnamt>11424</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>11345</Sole>
      <Shared>0</Shared>
      <None>79</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AT&amp;T Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00206r102</cusip>
    <value>5013965</value>
    <shrsOrPrnAmt>
      <sshPrnamt>172955</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>169405</Sole>
      <Shared>0</Shared>
      <None>3550</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AbbVie Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00287y109</cusip>
    <value>22156158</value>
    <shrsOrPrnAmt>
      <sshPrnamt>101872</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>96342</Sole>
      <Shared>0</Shared>
      <None>5530</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Abbott Laboratories</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>002824100</cusip>
    <value>6277078</value>
    <shrsOrPrnAmt>
      <sshPrnamt>61138</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>56638</Sole>
      <Shared>0</Shared>
      <None>4500</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Accenture Plc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>g1151c101</cusip>
    <value>6027223</value>
    <shrsOrPrnAmt>
      <sshPrnamt>30396</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>30036</Sole>
      <Shared>0</Shared>
      <None>360</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Adobe Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00724f101</cusip>
    <value>530401</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2182</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2182</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Advanced Drain Sys Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00790r104</cusip>
    <value>7040117</value>
    <shrsOrPrnAmt>
      <sshPrnamt>51339</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>50899</Sole>
      <Shared>0</Shared>
      <None>440</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Advanced Micro Devices Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>007903107</cusip>
    <value>26921723</value>
    <shrsOrPrnAmt>
      <sshPrnamt>132339</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>132339</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Aflac Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>001055102</cusip>
    <value>5117423</value>
    <shrsOrPrnAmt>
      <sshPrnamt>46645</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>46645</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Agilent Technologies Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00846u101</cusip>
    <value>6728013</value>
    <shrsOrPrnAmt>
      <sshPrnamt>59028</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>58328</Sole>
      <Shared>0</Shared>
      <None>700</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Air Products &amp; Chemicals Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>009158106</cusip>
    <value>3701424</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12742</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>12742</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Airbnb Inc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>009066101</cusip>
    <value>15936031</value>
    <shrsOrPrnAmt>
      <sshPrnamt>126196</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>126196</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Airbus SE ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>009279100</cusip>
    <value>8957402</value>
    <shrsOrPrnAmt>
      <sshPrnamt>193360</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>192016</Sole>
      <Shared>0</Shared>
      <None>1344</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Allstate Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>020002101</cusip>
    <value>850094</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4100</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4100</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Alphabet Inc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>02079k305</cusip>
    <value>71595251</value>
    <shrsOrPrnAmt>
      <sshPrnamt>248975</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>246450</Sole>
      <Shared>0</Shared>
      <None>2525</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Alphabet Inc Cl C</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>02079k107</cusip>
    <value>4601808</value>
    <shrsOrPrnAmt>
      <sshPrnamt>16042</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>15242</Sole>
      <Shared>0</Shared>
      <None>800</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Altria Group Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>02209s103</cusip>
    <value>712692</value>
    <shrsOrPrnAmt>
      <sshPrnamt>10800</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>10800</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Amazon.com Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>023135106</cusip>
    <value>22021220</value>
    <shrsOrPrnAmt>
      <sshPrnamt>105734</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>104734</Sole>
      <Shared>0</Shared>
      <None>1000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>American Electric Power Co Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>025537101</cusip>
    <value>268714</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2050</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2050</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>American Express Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>025816109</cusip>
    <value>3014213</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9965</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9715</Sole>
      <Shared>0</Shared>
      <None>250</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Amgen Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>031162100</cusip>
    <value>6426540</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18265</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>18170</Sole>
      <Shared>0</Shared>
      <None>95</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Amphenol Corp Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>032095101</cusip>
    <value>16486906</value>
    <shrsOrPrnAmt>
      <sshPrnamt>130486</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>125941</Sole>
      <Shared>0</Shared>
      <None>4545</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Analog Devices Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>032654105</cusip>
    <value>810303</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2547</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2547</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Anheuser-Busch Inbev ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>03524a108</cusip>
    <value>8872562</value>
    <shrsOrPrnAmt>
      <sshPrnamt>127902</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>127002</Sole>
      <Shared>0</Shared>
      <None>900</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Apple Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>037833100</cusip>
    <value>115434077</value>
    <shrsOrPrnAmt>
      <sshPrnamt>454841</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>445961</Sole>
      <Shared>0</Shared>
      <None>8880</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Applied Materials Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>038222105</cusip>
    <value>2619479</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7664</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7664</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AstraZeneca PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>G0593M107</cusip>
    <value>11546245</value>
    <shrsOrPrnAmt>
      <sshPrnamt>58545</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>58138</Sole>
      <Shared>0</Shared>
      <None>407</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Atlassian Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>049468101</cusip>
    <value>3474266</value>
    <shrsOrPrnAmt>
      <sshPrnamt>50905</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>50525</Sole>
      <Shared>0</Shared>
      <None>380</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Atmos Energy Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>049560105</cusip>
    <value>263226</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1425</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1425</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Autodesk Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>052769106</cusip>
    <value>15805667</value>
    <shrsOrPrnAmt>
      <sshPrnamt>66022</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>66022</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Automatic Data Processing Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>053015103</cusip>
    <value>6256928</value>
    <shrsOrPrnAmt>
      <sshPrnamt>30795</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>28870</Sole>
      <Shared>0</Shared>
      <None>1925</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Avery Dennison Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>053611109</cusip>
    <value>472280</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2735</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2735</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Axon Enterprise Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>05464c101</cusip>
    <value>7815995</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18404</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>18404</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BP PLC ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>055622104</cusip>
    <value>2933082</value>
    <shrsOrPrnAmt>
      <sshPrnamt>62406</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>62406</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Bank OZK</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>06417n103</cusip>
    <value>245512</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5350</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5350</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Bank of America Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>060505104</cusip>
    <value>29175461</value>
    <shrsOrPrnAmt>
      <sshPrnamt>598471</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>590331</Sole>
      <Shared>0</Shared>
      <None>8140</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Bank of New York Mellon Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>064058100</cusip>
    <value>25933230</value>
    <shrsOrPrnAmt>
      <sshPrnamt>218606</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>215666</Sole>
      <Shared>0</Shared>
      <None>2940</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Barclays PLC ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>06738e204</cusip>
    <value>6336891</value>
    <shrsOrPrnAmt>
      <sshPrnamt>299475</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>297411</Sole>
      <Shared>0</Shared>
      <None>2064</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Berkshire Hathaway Inc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>084670108</cusip>
    <value>718140</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 Cl B</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>084670702</cusip>
    <value>6480701</value>
    <shrsOrPrnAmt>
      <sshPrnamt>13524</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>13374</Sole>
      <Shared>0</Shared>
      <None>150</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Best Buy Co Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>086516101</cusip>
    <value>3927050</value>
    <shrsOrPrnAmt>
      <sshPrnamt>61169</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>60804</Sole>
      <Shared>0</Shared>
      <None>365</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BlackRock Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>09290d101</cusip>
    <value>12239683</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12727</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>12567</Sole>
      <Shared>0</Shared>
      <None>160</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Blackstone Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>09260d107</cusip>
    <value>736166</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6402</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6402</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Boeing Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>097023105</cusip>
    <value>25740351</value>
    <shrsOrPrnAmt>
      <sshPrnamt>129329</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>127944</Sole>
      <Shared>0</Shared>
      <None>1385</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Bristol-Myers Squibb Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>110122108</cusip>
    <value>7287522</value>
    <shrsOrPrnAmt>
      <sshPrnamt>120157</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>105275</Sole>
      <Shared>0</Shared>
      <None>14882</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Broadcom Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>11135f101</cusip>
    <value>77947308</value>
    <shrsOrPrnAmt>
      <sshPrnamt>251841</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>243181</Sole>
      <Shared>0</Shared>
      <None>8660</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Brookfield Asset Management Lt</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>113004105</cusip>
    <value>4249998</value>
    <shrsOrPrnAmt>
      <sshPrnamt>95613</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>94988</Sole>
      <Shared>0</Shared>
      <None>625</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CME Group Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>12572q105</cusip>
    <value>9077878</value>
    <shrsOrPrnAmt>
      <sshPrnamt>30736</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>30496</Sole>
      <Shared>0</Shared>
      <None>240</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CMS Energy Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>125896100</cusip>
    <value>465480</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6000</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CVS Health Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>126650100</cusip>
    <value>7784139</value>
    <shrsOrPrnAmt>
      <sshPrnamt>108384</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>107634</Sole>
      <Shared>0</Shared>
      <None>750</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Calamos Strat Tot Return Fd</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>128125101</cusip>
    <value>186351</value>
    <shrsOrPrnAmt>
      <sshPrnamt>10885</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>10885</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Cameco Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>13321l108</cusip>
    <value>630481</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5805</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5805</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Canadian National Railway Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>136375102</cusip>
    <value>5064403</value>
    <shrsOrPrnAmt>
      <sshPrnamt>49279</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>48969</Sole>
      <Shared>0</Shared>
      <None>310</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Cardinal Health Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>14149y108</cusip>
    <value>1823183</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8628</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8528</Sole>
      <Shared>0</Shared>
      <None>100</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Carrier Global Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>14448c104</cusip>
    <value>339437</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6028</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4028</Sole>
      <Shared>0</Shared>
      <None>2000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Casey's General Stores Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>147528103</cusip>
    <value>16486757</value>
    <shrsOrPrnAmt>
      <sshPrnamt>22651</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>22296</Sole>
      <Shared>0</Shared>
      <None>355</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Caterpillar Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>149123101</cusip>
    <value>7222750</value>
    <shrsOrPrnAmt>
      <sshPrnamt>10195</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>10095</Sole>
      <Shared>0</Shared>
      <None>100</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Charles Schwab Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>808513105</cusip>
    <value>465107</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4949</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4949</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Chevron Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>166764100</cusip>
    <value>31096393</value>
    <shrsOrPrnAmt>
      <sshPrnamt>150297</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>147472</Sole>
      <Shared>0</Shared>
      <None>2825</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Chubb Ltd</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>h1467j104</cusip>
    <value>16430131</value>
    <shrsOrPrnAmt>
      <sshPrnamt>50410</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>49560</Sole>
      <Shared>0</Shared>
      <None>850</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Cincinnati Financial Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>172062101</cusip>
    <value>664489</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>Cisco Systems Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>17275r102</cusip>
    <value>11429783</value>
    <shrsOrPrnAmt>
      <sshPrnamt>147310</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>146610</Sole>
      <Shared>0</Shared>
      <None>700</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Citigroup Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>172967424</cusip>
    <value>15610660</value>
    <shrsOrPrnAmt>
      <sshPrnamt>137648</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>136248</Sole>
      <Shared>0</Shared>
      <None>1400</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Clorox Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>189054109</cusip>
    <value>6650248</value>
    <shrsOrPrnAmt>
      <sshPrnamt>64173</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>62943</Sole>
      <Shared>0</Shared>
      <None>1230</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Coca-Cola Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>191216100</cusip>
    <value>11866158</value>
    <shrsOrPrnAmt>
      <sshPrnamt>156031</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>152371</Sole>
      <Shared>0</Shared>
      <None>3660</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Colgate-Palmolive Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>194162103</cusip>
    <value>3975127</value>
    <shrsOrPrnAmt>
      <sshPrnamt>46640</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>43440</Sole>
      <Shared>0</Shared>
      <None>3200</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Comcast Corp Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>20030n101</cusip>
    <value>207860</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7240</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7240</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ConocoPhillips</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>20825c104</cusip>
    <value>1689072</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12796</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>12196</Sole>
      <Shared>0</Shared>
      <None>600</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Consolidated Edison Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>209115104</cusip>
    <value>432914</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3825</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3125</Sole>
      <Shared>0</Shared>
      <None>700</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Constellation Energy Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>21037t109</cusip>
    <value>315273</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1129</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1129</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Corning Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>219350105</cusip>
    <value>1080962</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7950</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7950</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Corpay Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>219948106</cusip>
    <value>15187350</value>
    <shrsOrPrnAmt>
      <sshPrnamt>52192</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>52192</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Corteva Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>22052l104</cusip>
    <value>16063530</value>
    <shrsOrPrnAmt>
      <sshPrnamt>191895</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>189820</Sole>
      <Shared>0</Shared>
      <None>2075</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Costco Wholesale Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>22160k105</cusip>
    <value>22745547</value>
    <shrsOrPrnAmt>
      <sshPrnamt>22827</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>22538</Sole>
      <Shared>0</Shared>
      <None>289</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CrowdStrike Holdings Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>22788C105</cusip>
    <value>12172593</value>
    <shrsOrPrnAmt>
      <sshPrnamt>31179</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>30874</Sole>
      <Shared>0</Shared>
      <None>305</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Cummins Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>231021106</cusip>
    <value>14619617</value>
    <shrsOrPrnAmt>
      <sshPrnamt>27173</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>26793</Sole>
      <Shared>0</Shared>
      <None>380</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DBS Group Holdings Ltd ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>23304y100</cusip>
    <value>5367572</value>
    <shrsOrPrnAmt>
      <sshPrnamt>30426</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>30286</Sole>
      <Shared>0</Shared>
      <None>140</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DSV A/S ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>26251a108</cusip>
    <value>10756320</value>
    <shrsOrPrnAmt>
      <sshPrnamt>91129</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>90479</Sole>
      <Shared>0</Shared>
      <None>650</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DT Midstream Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>23345m107</cusip>
    <value>645877</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4796</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4046</Sole>
      <Shared>0</Shared>
      <None>750</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DTE Energy Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>233331107</cusip>
    <value>1195202</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8174</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7924</Sole>
      <Shared>0</Shared>
      <None>250</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Danaher Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>235851102</cusip>
    <value>289709</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1528</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1528</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Deere &amp; Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>244199105</cusip>
    <value>1991829</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3536</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3286</Sole>
      <Shared>0</Shared>
      <None>250</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Delta Air Lines Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>247361702</cusip>
    <value>300822</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4525</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4525</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dominion Energy Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>25746u109</cusip>
    <value>4927054</value>
    <shrsOrPrnAmt>
      <sshPrnamt>79700</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>79400</Sole>
      <Shared>0</Shared>
      <None>300</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Donaldson Co Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>257651109</cusip>
    <value>454055</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5350</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5350</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dow Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>260557103</cusip>
    <value>396633</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9523</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9523</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DuPont de Nemours Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>26614n102</cusip>
    <value>320243</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6992</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6992</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Duke Energy Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>26441c204</cusip>
    <value>12566443</value>
    <shrsOrPrnAmt>
      <sshPrnamt>95971</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>88691</Sole>
      <Shared>0</Shared>
      <None>7280</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Eaton Corp PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>g29183103</cusip>
    <value>922073</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2578</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2578</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Ecolab Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>278865100</cusip>
    <value>5338755</value>
    <shrsOrPrnAmt>
      <sshPrnamt>20069</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>19744</Sole>
      <Shared>0</Shared>
      <None>325</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Edwards Lifesciences Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>28176e108</cusip>
    <value>17891233</value>
    <shrsOrPrnAmt>
      <sshPrnamt>223417</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>223417</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Eli Lilly and Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>532457108</cusip>
    <value>61254842</value>
    <shrsOrPrnAmt>
      <sshPrnamt>66598</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>66118</Sole>
      <Shared>0</Shared>
      <None>480</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Emerson Electric Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>291011104</cusip>
    <value>8572246</value>
    <shrsOrPrnAmt>
      <sshPrnamt>65427</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>59777</Sole>
      <Shared>0</Shared>
      <None>5650</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Enbridge Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>29250n105</cusip>
    <value>643422</value>
    <shrsOrPrnAmt>
      <sshPrnamt>11906</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>11906</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Esperion Therapeutics Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>29664w105</cusip>
    <value>60280</value>
    <shrsOrPrnAmt>
      <sshPrnamt>22000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>22000</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Essex Property Trust Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>297178105</cusip>
    <value>290400</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1200</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1200</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Evercore Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>29977a105</cusip>
    <value>265674</value>
    <shrsOrPrnAmt>
      <sshPrnamt>890</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>890</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Eversource Energy</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>30040w108</cusip>
    <value>253357</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3657</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3657</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Exelon Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>30161n101</cusip>
    <value>612505</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12495</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>12495</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Expeditors Int'l of WA</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>302130109</cusip>
    <value>436852</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3050</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3050</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Experian PLC ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>30215c101</cusip>
    <value>4416457</value>
    <shrsOrPrnAmt>
      <sshPrnamt>128910</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>127950</Sole>
      <Shared>0</Shared>
      <None>960</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Exxon Mobil Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>30231g102</cusip>
    <value>35829235</value>
    <shrsOrPrnAmt>
      <sshPrnamt>211183</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>203858</Sole>
      <Shared>0</Shared>
      <None>7325</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Fastenal Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>311900104</cusip>
    <value>19990466</value>
    <shrsOrPrnAmt>
      <sshPrnamt>430829</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>427629</Sole>
      <Shared>0</Shared>
      <None>3200</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FedEx Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>31428x106</cusip>
    <value>1114843</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3130</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3030</Sole>
      <Shared>0</Shared>
      <None>100</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Fifth Third Bancorp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>316773100</cusip>
    <value>1502423</value>
    <shrsOrPrnAmt>
      <sshPrnamt>32338</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>28703</Sole>
      <Shared>0</Shared>
      <None>3635</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>First Horizon Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>320517105</cusip>
    <value>467149</value>
    <shrsOrPrnAmt>
      <sshPrnamt>20525</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>20525</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Ford Motor Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>345370860</cusip>
    <value>1683692</value>
    <shrsOrPrnAmt>
      <sshPrnamt>145901</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>145101</Sole>
      <Shared>0</Shared>
      <None>800</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Fortinet Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>34959E109</cusip>
    <value>483537</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5917</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5917</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>GE Aerospace</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>369604301</cusip>
    <value>2002281</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7056</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7056</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>GE Vernova Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>36828a101</cusip>
    <value>20038292</value>
    <shrsOrPrnAmt>
      <sshPrnamt>22956</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>22872</Sole>
      <Shared>0</Shared>
      <None>84</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Garmin Ltd</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>h2906t109</cusip>
    <value>276788</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1193</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1193</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Generac Hldgs Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>368736104</cusip>
    <value>16197545</value>
    <shrsOrPrnAmt>
      <sshPrnamt>82924</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>82604</Sole>
      <Shared>0</Shared>
      <None>320</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>General Dynamics Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>369550108</cusip>
    <value>17477449</value>
    <shrsOrPrnAmt>
      <sshPrnamt>50922</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>50282</Sole>
      <Shared>0</Shared>
      <None>640</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>General Motors Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>37045v100</cusip>
    <value>288315</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3870</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3870</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Gentex Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>371901109</cusip>
    <value>2147200</value>
    <shrsOrPrnAmt>
      <sshPrnamt>98270</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>98270</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Genuine Parts Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>372460105</cusip>
    <value>337448</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3191</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3191</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Gildan Activewear Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>375916103</cusip>
    <value>20549208</value>
    <shrsOrPrnAmt>
      <sshPrnamt>369258</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>363633</Sole>
      <Shared>0</Shared>
      <None>5625</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Gilead Sciences Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>375558103</cusip>
    <value>13445163</value>
    <shrsOrPrnAmt>
      <sshPrnamt>96471</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>95251</Sole>
      <Shared>0</Shared>
      <None>1220</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Globus Medical Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>379577208</cusip>
    <value>829548</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9628</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9628</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Goldman Sachs Group Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>38141g104</cusip>
    <value>1200460</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1419</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1419</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>HDFC Bank Ltd ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>40415f101</cusip>
    <value>4047478</value>
    <shrsOrPrnAmt>
      <sshPrnamt>162680</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>161555</Sole>
      <Shared>0</Shared>
      <None>1125</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>HEICO Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>422806109</cusip>
    <value>12714928</value>
    <shrsOrPrnAmt>
      <sshPrnamt>46371</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>45546</Sole>
      <Shared>0</Shared>
      <None>825</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Hershey Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>427866108</cusip>
    <value>37390680</value>
    <shrsOrPrnAmt>
      <sshPrnamt>179858</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>177338</Sole>
      <Shared>0</Shared>
      <None>2520</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Home Depot Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>437076102</cusip>
    <value>14069337</value>
    <shrsOrPrnAmt>
      <sshPrnamt>42778</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>40493</Sole>
      <Shared>0</Shared>
      <None>2285</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Honeywell International Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>438516106</cusip>
    <value>2588496</value>
    <shrsOrPrnAmt>
      <sshPrnamt>11452</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>11452</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Huntington Bancshares Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>446150104</cusip>
    <value>643778</value>
    <shrsOrPrnAmt>
      <sshPrnamt>41136</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>41136</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>IBM</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>459200101</cusip>
    <value>17150360</value>
    <shrsOrPrnAmt>
      <sshPrnamt>70755</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>66440</Sole>
      <Shared>0</Shared>
      <None>4315</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>IDEXX Laboratories Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>45168d104</cusip>
    <value>16976944</value>
    <shrsOrPrnAmt>
      <sshPrnamt>30214</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>30214</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Illinois Tool Works Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>452308109</cusip>
    <value>898001</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3450</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2650</Sole>
      <Shared>0</Shared>
      <None>800</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intel Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>458140100</cusip>
    <value>2611393</value>
    <shrsOrPrnAmt>
      <sshPrnamt>59175</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>57050</Sole>
      <Shared>0</Shared>
      <None>2125</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>InterContinental Hotels Group</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>45857p806</cusip>
    <value>400380</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3000</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intercontinental Exchange Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>45866f104</cusip>
    <value>12200839</value>
    <shrsOrPrnAmt>
      <sshPrnamt>77574</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>76499</Sole>
      <Shared>0</Shared>
      <None>1075</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intuit Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>461202103</cusip>
    <value>8184521</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18929</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>18929</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Intuitive Surgical Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>46120e602</cusip>
    <value>14153776</value>
    <shrsOrPrnAmt>
      <sshPrnamt>30703</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>30560</Sole>
      <Shared>0</Shared>
      <None>143</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Invesco S&amp;P 500 Eq Wt ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>46137v357</cusip>
    <value>6104783</value>
    <shrsOrPrnAmt>
      <sshPrnamt>31809</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>31809</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Invesco Van Kampen Muni.Op.Tr</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>egb32c103</cusip>
    <value>0</value>
    <shrsOrPrnAmt>
      <sshPrnamt>43613</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>43613</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Iron Mountain Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>46284v101</cusip>
    <value>7684503</value>
    <shrsOrPrnAmt>
      <sshPrnamt>75235</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>73845</Sole>
      <Shared>0</Shared>
      <None>1390</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>J.M. Smucker Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>832696405</cusip>
    <value>308608</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3200</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3200</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>JPMorgan Chase &amp; Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>46625h100</cusip>
    <value>28544404</value>
    <shrsOrPrnAmt>
      <sshPrnamt>97037</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>92887</Sole>
      <Shared>0</Shared>
      <None>4150</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Johnson &amp; Johnson</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>478160104</cusip>
    <value>21537120</value>
    <shrsOrPrnAmt>
      <sshPrnamt>88108</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>85258</Sole>
      <Shared>0</Shared>
      <None>2850</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Johnson Controls Int'l</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>g51502105</cusip>
    <value>16301180</value>
    <shrsOrPrnAmt>
      <sshPrnamt>124484</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>121764</Sole>
      <Shared>0</Shared>
      <None>2720</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Kimberly-Clark Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>494368103</cusip>
    <value>1568795</value>
    <shrsOrPrnAmt>
      <sshPrnamt>16262</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>10675</Sole>
      <Shared>0</Shared>
      <None>5587</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Kinder Morgan Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>49456b101</cusip>
    <value>6236915</value>
    <shrsOrPrnAmt>
      <sshPrnamt>186010</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>181160</Sole>
      <Shared>0</Shared>
      <None>4850</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Kraft Heinz Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>500754106</cusip>
    <value>220020</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9783</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9783</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Linde PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>g54950103</cusip>
    <value>13831704</value>
    <shrsOrPrnAmt>
      <sshPrnamt>27900</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>27560</Sole>
      <Shared>0</Shared>
      <None>340</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Lockheed Martin Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>539830109</cusip>
    <value>10164027</value>
    <shrsOrPrnAmt>
      <sshPrnamt>16817</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>16572</Sole>
      <Shared>0</Shared>
      <None>245</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>London Stock Exchange ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>54211y107</cusip>
    <value>4075849</value>
    <shrsOrPrnAmt>
      <sshPrnamt>139474</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>138449</Sole>
      <Shared>0</Shared>
      <None>1025</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Lonza Group AG ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>54338v101</cusip>
    <value>5365856</value>
    <shrsOrPrnAmt>
      <sshPrnamt>85415</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>84905</Sole>
      <Shared>0</Shared>
      <None>510</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Lowe's Companies Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>548661107</cusip>
    <value>1028763</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4354</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4354</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>LyondellBasell Industries NV</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>n53745100</cusip>
    <value>358492</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4450</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4450</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MSCI Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>55354g100</cusip>
    <value>11015747</value>
    <shrsOrPrnAmt>
      <sshPrnamt>20437</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>20182</Sole>
      <Shared>0</Shared>
      <None>255</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MTU Aero Engines AG ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>62473g102</cusip>
    <value>4940748</value>
    <shrsOrPrnAmt>
      <sshPrnamt>27665</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>27495</Sole>
      <Shared>0</Shared>
      <None>170</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Marathon Petroleum Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>56585a102</cusip>
    <value>772586</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3164</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2764</Sole>
      <Shared>0</Shared>
      <None>400</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Marsh &amp; McLennan Companies Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>571748102</cusip>
    <value>8977252</value>
    <shrsOrPrnAmt>
      <sshPrnamt>51757</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>50672</Sole>
      <Shared>0</Shared>
      <None>1085</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Marvell Technology Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>573874104</cusip>
    <value>23052699</value>
    <shrsOrPrnAmt>
      <sshPrnamt>232738</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>232738</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Mastercard Inc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>57636q104</cusip>
    <value>17973270</value>
    <shrsOrPrnAmt>
      <sshPrnamt>35971</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>35971</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>McCormick &amp; Co Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>579780206</cusip>
    <value>377291</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7480</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7480</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>McDonald's Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>580135101</cusip>
    <value>7320348</value>
    <shrsOrPrnAmt>
      <sshPrnamt>23554</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>23554</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Medtronic PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>g5960l103</cusip>
    <value>8987511</value>
    <shrsOrPrnAmt>
      <sshPrnamt>103722</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>102167</Sole>
      <Shared>0</Shared>
      <None>1555</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MercadoLibre Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>58733r102</cusip>
    <value>4552510</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2633</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2618</Sole>
      <Shared>0</Shared>
      <None>15</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Mercantile Bank Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>587376104</cusip>
    <value>464045</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9189</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9189</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Merck &amp; Co Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>58933y105</cusip>
    <value>15942395</value>
    <shrsOrPrnAmt>
      <sshPrnamt>132533</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>125733</Sole>
      <Shared>0</Shared>
      <None>6800</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Meta Platforms Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>30303m102</cusip>
    <value>22555957</value>
    <shrsOrPrnAmt>
      <sshPrnamt>39425</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>39425</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Microsoft Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>594918104</cusip>
    <value>89894149</value>
    <shrsOrPrnAmt>
      <sshPrnamt>242846</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>240091</Sole>
      <Shared>0</Shared>
      <None>2755</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Mondelez International Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>609207105</cusip>
    <value>10611524</value>
    <shrsOrPrnAmt>
      <sshPrnamt>184100</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>182450</Sole>
      <Shared>0</Shared>
      <None>1650</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Monolithic Power Systems Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>609839105</cusip>
    <value>39440415</value>
    <shrsOrPrnAmt>
      <sshPrnamt>36073</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>35808</Sole>
      <Shared>0</Shared>
      <None>265</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Motorola Solutions Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>620076307</cusip>
    <value>1456837</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3357</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3357</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Murata Manufacturing Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>626425102</cusip>
    <value>13463084</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1256588</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1247758</Sole>
      <Shared>0</Shared>
      <None>8830</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NVIDIA Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>67066g104</cusip>
    <value>101801853</value>
    <shrsOrPrnAmt>
      <sshPrnamt>583726</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>570976</Sole>
      <Shared>0</Shared>
      <None>12750</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Neogen Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>640491106</cusip>
    <value>837958</value>
    <shrsOrPrnAmt>
      <sshPrnamt>90200</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>87900</Sole>
      <Shared>0</Shared>
      <None>2300</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Nestle SA ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>641069406</cusip>
    <value>3693076</value>
    <shrsOrPrnAmt>
      <sshPrnamt>37842</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>37572</Sole>
      <Shared>0</Shared>
      <None>270</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Netflix Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>64110l106</cusip>
    <value>10154594</value>
    <shrsOrPrnAmt>
      <sshPrnamt>105612</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>105612</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Neurocrine Biosciences Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>64125c109</cusip>
    <value>16033285</value>
    <shrsOrPrnAmt>
      <sshPrnamt>121704</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>121704</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Newmont Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>651639106</cusip>
    <value>866000</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8000</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NextEra Energy Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>65339f101</cusip>
    <value>2342712</value>
    <shrsOrPrnAmt>
      <sshPrnamt>25223</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>25223</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Nintendo Co Ltd ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>654445303</cusip>
    <value>8529462</value>
    <shrsOrPrnAmt>
      <sshPrnamt>618570</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>613758</Sole>
      <Shared>0</Shared>
      <None>4812</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Nokia Corp ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>654902204</cusip>
    <value>11860769</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1475220</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1463945</Sole>
      <Shared>0</Shared>
      <None>11275</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Nordson Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>655663102</cusip>
    <value>3161591</value>
    <shrsOrPrnAmt>
      <sshPrnamt>11883</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>11883</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Novartis AG ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>66987v109</cusip>
    <value>244095</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1598</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1598</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Oracle Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>68389x105</cusip>
    <value>17544191</value>
    <shrsOrPrnAmt>
      <sshPrnamt>119259</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>118634</Sole>
      <Shared>0</Shared>
      <None>625</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PNC Financial Services Group I</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>693475105</cusip>
    <value>13290084</value>
    <shrsOrPrnAmt>
      <sshPrnamt>63867</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>62912</Sole>
      <Shared>0</Shared>
      <None>955</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PPG Industries Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>693506107</cusip>
    <value>540172</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5054</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5054</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Palantir Technologies Inc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>69608a108</cusip>
    <value>1318714</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9015</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9015</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Palo Alto Networks Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>697435105</cusip>
    <value>10520038</value>
    <shrsOrPrnAmt>
      <sshPrnamt>65619</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>65619</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Parker-Hannifin Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>701094104</cusip>
    <value>658001</value>
    <shrsOrPrnAmt>
      <sshPrnamt>735</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>735</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PayPal Holdings Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>70450y103</cusip>
    <value>354377</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7835</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7835</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Paychex Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>704326107</cusip>
    <value>1038653</value>
    <shrsOrPrnAmt>
      <sshPrnamt>11275</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>11275</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Pentair PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>g7s00t104</cusip>
    <value>296174</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3400</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3400</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Penumbra Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>70975l107</cusip>
    <value>527034</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1605</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1605</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PepsiCo Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>713448108</cusip>
    <value>42715470</value>
    <shrsOrPrnAmt>
      <sshPrnamt>275069</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>268084</Sole>
      <Shared>0</Shared>
      <None>6985</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Pfizer Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>717081103</cusip>
    <value>11283864</value>
    <shrsOrPrnAmt>
      <sshPrnamt>401847</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>395147</Sole>
      <Shared>0</Shared>
      <None>6700</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Philip Morris International In</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>718172109</cusip>
    <value>599358</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3625</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3625</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Phillips 66</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>718546104</cusip>
    <value>248858</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1366</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>866</Sole>
      <Shared>0</Shared>
      <None>500</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Pinnacle West Capital Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>723484101</cusip>
    <value>2445706</value>
    <shrsOrPrnAmt>
      <sshPrnamt>24275</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>24275</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Principal Financial Group Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>74251v102</cusip>
    <value>8805549</value>
    <shrsOrPrnAmt>
      <sshPrnamt>97720</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>96895</Sole>
      <Shared>0</Shared>
      <None>825</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Private Bancorp of America Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>74274f100</cusip>
    <value>353548</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5200</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5200</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ProShares S&amp;P 400 MidCap Div A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>74347b680</cusip>
    <value>300275</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3475</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3475</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ProShares S&amp;P 500 Div Aristocr</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>74348a467</cusip>
    <value>569789</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5375</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5375</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Procter &amp; Gamble Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>742718109</cusip>
    <value>10491833</value>
    <shrsOrPrnAmt>
      <sshPrnamt>72638</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>68463</Sole>
      <Shared>0</Shared>
      <None>4175</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Progressive Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>743315103</cusip>
    <value>748951</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3778</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3778</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Public Storage REIT</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>74460d109</cusip>
    <value>3398731</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12547</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>12042</Sole>
      <Shared>0</Shared>
      <None>505</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>QUALCOMM Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>747525103</cusip>
    <value>1055228</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8194</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8194</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Qnity Electronics Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>74743l100</cusip>
    <value>379659</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3291</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3291</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>RPM International Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>749685103</cusip>
    <value>693315</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6975</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6975</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>RTX Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>75513e101</cusip>
    <value>7985674</value>
    <shrsOrPrnAmt>
      <sshPrnamt>41398</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>37997</Sole>
      <Shared>0</Shared>
      <None>3401</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Realty Income Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>756109104</cusip>
    <value>3766424</value>
    <shrsOrPrnAmt>
      <sshPrnamt>61563</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>61113</Sole>
      <Shared>0</Shared>
      <None>450</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Republic Services Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>760759100</cusip>
    <value>14588265</value>
    <shrsOrPrnAmt>
      <sshPrnamt>66607</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>65087</Sole>
      <Shared>0</Shared>
      <None>1520</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ResMed Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>761152107</cusip>
    <value>12183652</value>
    <shrsOrPrnAmt>
      <sshPrnamt>54275</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>54275</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Rockwell Automation Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>773903109</cusip>
    <value>6486756</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18075</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>17950</Sole>
      <Shared>0</Shared>
      <None>125</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Roper Technologies Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>776696106</cusip>
    <value>303966</value>
    <shrsOrPrnAmt>
      <sshPrnamt>859</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>859</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Ross Stores Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>778296103</cusip>
    <value>15172115</value>
    <shrsOrPrnAmt>
      <sshPrnamt>70037</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>69092</Sole>
      <Shared>0</Shared>
      <None>945</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>S&amp;P Global Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78409v104</cusip>
    <value>410453</value>
    <shrsOrPrnAmt>
      <sshPrnamt>965</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>965</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SLB Ltd</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>806857108</cusip>
    <value>27336808</value>
    <shrsOrPrnAmt>
      <sshPrnamt>531948</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>529173</Sole>
      <Shared>0</Shared>
      <None>2775</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SPDR Gold Shares</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78463v107</cusip>
    <value>1454380</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3380</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3380</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SPDR Index Dvlpd Wrld Ex-US ET</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78463x889</cusip>
    <value>397201</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8701</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>8701</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SPDR S&amp;P 600 Small Cap Value E</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78464a300</cusip>
    <value>264824</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2800</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2800</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SS SPDR Semiconductor ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78464a862</cusip>
    <value>221762</value>
    <shrsOrPrnAmt>
      <sshPrnamt>680</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>680</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>STERIS PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>g8473t100</cusip>
    <value>306044</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1384</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1384</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Salesforce Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>79466l302</cusip>
    <value>338806</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1815</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1290</Sole>
      <Shared>0</Shared>
      <None>525</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ServiceNow Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>81762p102</cusip>
    <value>9071281</value>
    <shrsOrPrnAmt>
      <sshPrnamt>86765</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>86765</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Shell PLC ADR</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>780259305</cusip>
    <value>5451660</value>
    <shrsOrPrnAmt>
      <sshPrnamt>58620</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>58620</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Sherwin-Williams Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>824348106</cusip>
    <value>11017304</value>
    <shrsOrPrnAmt>
      <sshPrnamt>34370</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>34145</Sole>
      <Shared>0</Shared>
      <None>225</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Shopify Inc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>82509l107</cusip>
    <value>522521</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4405</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4405</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Snap-on Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>833034101</cusip>
    <value>567713</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1563</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1563</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Southern Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>842587107</cusip>
    <value>10348681</value>
    <shrsOrPrnAmt>
      <sshPrnamt>107218</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>105953</Sole>
      <Shared>0</Shared>
      <None>1265</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Spire Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>84857l101</cusip>
    <value>7741532</value>
    <shrsOrPrnAmt>
      <sshPrnamt>85504</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>83799</Sole>
      <Shared>0</Shared>
      <None>1705</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Starbucks Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>855244109</cusip>
    <value>10479023</value>
    <shrsOrPrnAmt>
      <sshPrnamt>116966</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>115916</Sole>
      <Shared>0</Shared>
      <None>1050</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>State Street Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>857477103</cusip>
    <value>12930509</value>
    <shrsOrPrnAmt>
      <sshPrnamt>102169</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>101294</Sole>
      <Shared>0</Shared>
      <None>875</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>State Street SPDR S&amp;P 500 ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78462f103</cusip>
    <value>700416</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1077</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1077</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Stryker Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>863667101</cusip>
    <value>17542974</value>
    <shrsOrPrnAmt>
      <sshPrnamt>53389</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>52404</Sole>
      <Shared>0</Shared>
      <None>985</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Sysco Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>871829107</cusip>
    <value>1048551</value>
    <shrsOrPrnAmt>
      <sshPrnamt>14700</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>14700</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>T-Mobile US Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>872590104</cusip>
    <value>12241809</value>
    <shrsOrPrnAmt>
      <sshPrnamt>58286</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>57811</Sole>
      <Shared>0</Shared>
      <None>475</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>TJX Companies Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>872540109</cusip>
    <value>5782577</value>
    <shrsOrPrnAmt>
      <sshPrnamt>36209</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>35959</Sole>
      <Shared>0</Shared>
      <None>250</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Taiwan Semiconductor Mfg Co Lt</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>874039100</cusip>
    <value>16541639</value>
    <shrsOrPrnAmt>
      <sshPrnamt>48947</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>48632</Sole>
      <Shared>0</Shared>
      <None>315</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Target Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>87612e106</cusip>
    <value>3181742</value>
    <shrsOrPrnAmt>
      <sshPrnamt>26252</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>25686</Sole>
      <Shared>0</Shared>
      <None>566</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Techtronic Industries Co Ltd A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>87873r101</cusip>
    <value>5233783</value>
    <shrsOrPrnAmt>
      <sshPrnamt>80380</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>79820</Sole>
      <Shared>0</Shared>
      <None>560</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Terreno Realty Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>88146m101</cusip>
    <value>9771738</value>
    <shrsOrPrnAmt>
      <sshPrnamt>159097</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>156672</Sole>
      <Shared>0</Shared>
      <None>2425</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Tesla Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>88160r101</cusip>
    <value>301861</value>
    <shrsOrPrnAmt>
      <sshPrnamt>812</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>812</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Texas Instruments Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>882508104</cusip>
    <value>11627627</value>
    <shrsOrPrnAmt>
      <sshPrnamt>59893</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>58588</Sole>
      <Shared>0</Shared>
      <None>1305</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Thermo Fisher Scientific Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>883556102</cusip>
    <value>11788856</value>
    <shrsOrPrnAmt>
      <sshPrnamt>23984</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>23669</Sole>
      <Shared>0</Shared>
      <None>315</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Toro Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>891092108</cusip>
    <value>631187</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6755</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6755</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Travelers Companies Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>89417e109</cusip>
    <value>2170683</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7442</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5042</Sole>
      <Shared>0</Shared>
      <None>2400</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Tyson Foods Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>902494103</cusip>
    <value>205024</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3200</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3200</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Uber Technologies Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>90353t100</cusip>
    <value>9915551</value>
    <shrsOrPrnAmt>
      <sshPrnamt>137850</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>137850</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Union Pacific Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>907818108</cusip>
    <value>10817213</value>
    <shrsOrPrnAmt>
      <sshPrnamt>44585</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>43950</Sole>
      <Shared>0</Shared>
      <None>635</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>United Parcel Service Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>911312106</cusip>
    <value>418115</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4250</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3750</Sole>
      <Shared>0</Shared>
      <None>500</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>UnitedHealth Group Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>91324p102</cusip>
    <value>6965812</value>
    <shrsOrPrnAmt>
      <sshPrnamt>25743</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>25278</Sole>
      <Shared>0</Shared>
      <None>465</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Valero Energy Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>91913y100</cusip>
    <value>741240</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3000</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Valley National Bancorp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>919794107</cusip>
    <value>227180</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18500</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>18500</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VanEck Gold Miners ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92189f106</cusip>
    <value>322113</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3510</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3510</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vanguard Mid-Cap ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>922908629</cusip>
    <value>201026</value>
    <shrsOrPrnAmt>
      <sshPrnamt>700</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>700</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vanguard S&amp;P 500 ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>922908363</cusip>
    <value>3826554</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6404</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6404</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vanguard Total Intl Stk ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>921909768</cusip>
    <value>5564026</value>
    <shrsOrPrnAmt>
      <sshPrnamt>72157</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>72157</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vanguard US Tot Mkt ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>922908769</cusip>
    <value>13506101</value>
    <shrsOrPrnAmt>
      <sshPrnamt>42100</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>42100</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Veeva Systems Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>922475108</cusip>
    <value>7975667</value>
    <shrsOrPrnAmt>
      <sshPrnamt>45404</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>45404</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Verizon Communications Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92343v104</cusip>
    <value>14000998</value>
    <shrsOrPrnAmt>
      <sshPrnamt>278904</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>273604</Sole>
      <Shared>0</Shared>
      <None>5300</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vertex Pharmaceuticals Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92532f100</cusip>
    <value>8330650</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18656</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>18656</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Viper Energy Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>64361Q101</cusip>
    <value>7749309</value>
    <shrsOrPrnAmt>
      <sshPrnamt>164914</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>161589</Sole>
      <Shared>0</Shared>
      <None>3325</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Visa Inc Cl A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92826c839</cusip>
    <value>24412227</value>
    <shrsOrPrnAmt>
      <sshPrnamt>80771</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>79671</Sole>
      <Shared>0</Shared>
      <None>1100</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>W.W. Grainger Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>384802104</cusip>
    <value>954459</value>
    <shrsOrPrnAmt>
      <sshPrnamt>875</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>875</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>WEC Energy Group Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92939u106</cusip>
    <value>26113313</value>
    <shrsOrPrnAmt>
      <sshPrnamt>225562</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>224512</Sole>
      <Shared>0</Shared>
      <None>1050</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>WESCO Int'l</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>95082p105</cusip>
    <value>16905064</value>
    <shrsOrPrnAmt>
      <sshPrnamt>61783</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>61523</Sole>
      <Shared>0</Shared>
      <None>260</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Wal-Mart de Mexico SAB de CV A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>93114w107</cusip>
    <value>4928443</value>
    <shrsOrPrnAmt>
      <sshPrnamt>152150</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>151000</Sole>
      <Shared>0</Shared>
      <None>1150</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Wallbridge Mining Co Ltd</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>932397102</cusip>
    <value>575</value>
    <shrsOrPrnAmt>
      <sshPrnamt>10000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>10000</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Walmart Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>931142103</cusip>
    <value>26867223</value>
    <shrsOrPrnAmt>
      <sshPrnamt>216183</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>213758</Sole>
      <Shared>0</Shared>
      <None>2425</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Walt Disney Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>254687106</cusip>
    <value>9905262</value>
    <shrsOrPrnAmt>
      <sshPrnamt>102773</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>101773</Sole>
      <Shared>0</Shared>
      <None>1000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Waste Management Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>94106l109</cusip>
    <value>526219</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2290</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2290</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Wells Fargo &amp; Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>949746101</cusip>
    <value>27537895</value>
    <shrsOrPrnAmt>
      <sshPrnamt>345910</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>342285</Sole>
      <Shared>0</Shared>
      <None>3625</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Welltower Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>95040q104</cusip>
    <value>8610666</value>
    <shrsOrPrnAmt>
      <sshPrnamt>43552</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>42627</Sole>
      <Shared>0</Shared>
      <None>925</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Weyerhaeuser Co</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>962166104</cusip>
    <value>6857867</value>
    <shrsOrPrnAmt>
      <sshPrnamt>280715</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>278465</Sole>
      <Shared>0</Shared>
      <None>2250</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>WisdomTree Europe Hedged Equit</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>97717x701</cusip>
    <value>10314083</value>
    <shrsOrPrnAmt>
      <sshPrnamt>197210</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>195800</Sole>
      <Shared>0</Shared>
      <None>1410</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Xcel Energy Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>98389b100</cusip>
    <value>20769191</value>
    <shrsOrPrnAmt>
      <sshPrnamt>261445</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>260045</Sole>
      <Shared>0</Shared>
      <None>1400</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Yum! Brands Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>988498101</cusip>
    <value>22384145</value>
    <shrsOrPrnAmt>
      <sshPrnamt>143968</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>140778</Sole>
      <Shared>0</Shared>
      <None>3190</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Zoetis Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>98978V103</cusip>
    <value>809502</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6848</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6823</Sole>
      <Shared>0</Shared>
      <None>25</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares Core S&amp;P 500 ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287200</cusip>
    <value>596381</value>
    <shrsOrPrnAmt>
      <sshPrnamt>913</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>913</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares DJ Select DVD Index</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287168</cusip>
    <value>237259</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1567</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1567</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares Gold Trust</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464285204</cusip>
    <value>2525696</value>
    <shrsOrPrnAmt>
      <sshPrnamt>28649</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>28649</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares MSCI EAFE ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287465</cusip>
    <value>4140943</value>
    <shrsOrPrnAmt>
      <sshPrnamt>42633</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>42633</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares MSCI Emerging Markets</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287234</cusip>
    <value>18202785</value>
    <shrsOrPrnAmt>
      <sshPrnamt>320528</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>318618</Sole>
      <Shared>0</Shared>
      <None>1910</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares MSCI Europe Financials</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464289180</cusip>
    <value>20831413</value>
    <shrsOrPrnAmt>
      <sshPrnamt>597745</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>593495</Sole>
      <Shared>0</Shared>
      <None>4250</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares MSCI Japan ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>46434g822</cusip>
    <value>11038419</value>
    <shrsOrPrnAmt>
      <sshPrnamt>130725</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>129825</Sole>
      <Shared>0</Shared>
      <None>900</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares Russell 1000 ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287622</cusip>
    <value>714546</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2004</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2004</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares Russell 1000 Growth ET</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287614</cusip>
    <value>3018486</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7079</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7079</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares Russell 1000 Value ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287598</cusip>
    <value>3340303</value>
    <shrsOrPrnAmt>
      <sshPrnamt>15633</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>15633</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares Russell 2000 ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287655</cusip>
    <value>1220408</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4921</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4921</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares S&amp;P 500 Growth ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287309</cusip>
    <value>1092077</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9655</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9655</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares S&amp;P 500 Value ETF</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287408</cusip>
    <value>1307019</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6190</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6190</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares S&amp;P MidCap 400</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287507</cusip>
    <value>2097482</value>
    <shrsOrPrnAmt>
      <sshPrnamt>31060</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>31060</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares S&amp;P Midcap 400 Growth</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287606</cusip>
    <value>203655</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2024</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2024</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares S&amp;P Smallcap 600</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287804</cusip>
    <value>1621624</value>
    <shrsOrPrnAmt>
      <sshPrnamt>13045</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>13045</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares S&amp;P Smallcap 600 Growt</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287887</cusip>
    <value>5856414</value>
    <shrsOrPrnAmt>
      <sshPrnamt>40470</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>40470</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares S&amp;P Smallcap 600 Value</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287879</cusip>
    <value>3885678</value>
    <shrsOrPrnAmt>
      <sshPrnamt>32804</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>32804</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SPDR Bloomberg High Yield Bond</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>78468r622</cusip>
    <value>210201</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2196</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2196</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vanguard Intermediate-Term Cor</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>92206c870</cusip>
    <value>269351</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3255</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3255</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vanguard Total Bond Market ETF</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>921937835</cusip>
    <value>10530520</value>
    <shrsOrPrnAmt>
      <sshPrnamt>143000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>143000</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares 1-3 Year Treasury Bond</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464287457</cusip>
    <value>584843</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7083</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7083</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares Broad USD Inv Grade Co</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464288620</cusip>
    <value>260658</value>
    <shrsOrPrnAmt>
      <sshPrnamt>5088</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5088</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>iShares Intermediate Gov/Credi</nameOfIssuer>
    <titleOfClass>ETF</titleOfClass>
    <cusip>464288612</cusip>
    <value>1035329</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9705</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9705</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
</informationTable>
