<?xml version="1.0" ?>
<proxyVoteTable xmlns="http://www.sec.gov/edgar/document/npxproxy/informationtable">
  <proxyTable>
    <issuerName>Advanced Drainage Systems, Inc</issuerName>
    <cusip>00790R104</cusip>
    <meetingDate>07/17/2025</meetingDate>
    <voteDescription>To hold a non-binding advisory vote on the compensation for the company?s named executive officers.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>48320</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>48320</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Bio-Techne</issuerName>
    <cusip>09073M104</cusip>
    <meetingDate>10/30/2025</meetingDate>
    <voteDescription>Approve, on an advisory basis, the compensation of our executive officers.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>28400</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>28400</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Barrett Business Services</issuerName>
    <cusip>068463108</cusip>
    <meetingDate>06/01/2026</meetingDate>
    <voteDescription>Advisory vote to approve the compensation of our named executive officers.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>88352</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>88352</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Bright Horizons Family Solutions</issuerName>
    <cusip>109194100</cusip>
    <meetingDate>06/03/2026</meetingDate>
    <voteDescription>Approve, on an advisory basis, the 2025 compensation paid by the Company to its named executive officers.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>92851</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>92851</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Cognex Corporation</issuerName>
    <cusip>192422103</cusip>
    <meetingDate>04/29/2026</meetingDate>
    <voteDescription>To cast a&#160;non-binding&#160;advisory vote to approve executive compensation.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>117719</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>117719</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Evertec</issuerName>
    <cusip>30040P103</cusip>
    <meetingDate>05/21/2026</meetingDate>
    <voteDescription>Advisory Vote on Executive Compensation.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>188204</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>188204</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Heico</issuerName>
    <cusip>422806208</cusip>
    <meetingDate>03/13/2026</meetingDate>
    <voteDescription>Advisory Approval of the company&#8217;s executive compensation</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>31469</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>31469</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Interparfums</issuerName>
    <cusip>458334109</cusip>
    <meetingDate>09/10/2025</meetingDate>
    <voteDescription>To vote for the advisory resolution to approve executive compensation to our named executive officers</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>24890</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>24890</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Jack Henry and Associates</issuerName>
    <cusip>426281101</cusip>
    <meetingDate>11/12/2025</meetingDate>
    <voteDescription>To approve, on an advisory basis, the compensation of our named executive officers.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>33397</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>33397</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Littelfuse, Inc</issuerName>
    <cusip>537008104</cusip>
    <meetingDate>04/22/2026</meetingDate>
    <voteDescription>To conduct an advisory vote on the compensation of our named executive officers (?NEOs?).</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>9981</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>9981</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Medpace Holdings Inc</issuerName>
    <cusip>58506Q109</cusip>
    <meetingDate>05/15/2026</meetingDate>
    <voteDescription>To conduct an advisory vote to approve compensation for our named executive officers.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>11106</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>11106</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Qualys, Inc</issuerName>
    <cusip>74758T303</cusip>
    <meetingDate>06/10/2026</meetingDate>
    <voteDescription>To approve, on an advisory and non-binding basis, the compensation of our named executive officers as described in this proxy statement.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>8397</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>8397</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Resources Connection Inc</issuerName>
    <cusip>76122Q105</cusip>
    <meetingDate>10/16/2025</meetingDate>
    <voteDescription>To approve on an advisory basis the company?s executive compensation.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>159355</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>159355</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Rollins Inc</issuerName>
    <cusip>775711104</cusip>
    <meetingDate>04/28/2026</meetingDate>
    <voteDescription>To hold an advisory (non-binding) vote to approve the compensation of the Company's named executive officers.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>91968</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>91968</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Trex Company Inc</issuerName>
    <cusip>89531P105</cusip>
    <meetingDate>04/28/2026</meetingDate>
    <voteDescription>To approve, on a non-binding advisory basis, the compensation of our named executive officers.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>119339</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>119339</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Trimble Inc</issuerName>
    <cusip>896239100</cusip>
    <meetingDate>05/26/2026</meetingDate>
    <voteDescription>Advisory vote to approve executive compensation</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>75983</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>75983</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Trinet Group, Inc</issuerName>
    <cusip>896288107</cusip>
    <meetingDate>05/27/2026</meetingDate>
    <voteDescription>Approval, on an advisory basis, of the compensation of our Named Executive Officers.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>45650</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>AGAINST</howVoted>
        <sharesVoted>45650</sharesVoted>
        <managementRecommendation>AGAINST</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>U.S. Physical Therapy</issuerName>
    <cusip>90337L108</cusip>
    <meetingDate>05/19/2026</meetingDate>
    <voteDescription>Advisory vote to approve the named executive officer compensation.</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>95024</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>95024</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>West Pharmaceutical Services</issuerName>
    <cusip>955306105</cusip>
    <meetingDate>05/04/2026</meetingDate>
    <voteDescription>Consideration of an advisory vote to approve Named Executive Officer compensation</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>28983</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>28983</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
  <proxyTable>
    <issuerName>Westinghouse Air Brake Technologies Inc</issuerName>
    <cusip>929740108</cusip>
    <meetingDate>05/12/2026</meetingDate>
    <voteDescription>Approve an advisory (non-binding) resolution to approve the 2025 named executive officer compensation</voteDescription>
    <voteCategories>
      <voteCategory>
        <categoryType>SECTION 14A SAY-ON-PAY VOTES</categoryType>
      </voteCategory>
    </voteCategories>
    <voteSource>ISSUER</voteSource>
    <sharesVoted>17480</sharesVoted>
    <sharesOnLoan>0</sharesOnLoan>
    <vote>
      <voteRecord>
        <howVoted>FOR</howVoted>
        <sharesVoted>17480</sharesVoted>
        <managementRecommendation>FOR</managementRecommendation>
      </voteRecord>
    </vote>
  </proxyTable>
</proxyVoteTable>
