<?xml version="1.0" ?>
<informationTable xsi:schemaLocation="http://www.sec.gov/edgar/document/thirteenf/informationtable eis_13FDocument.xsd" xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable" xmlns:n1="http://www.sec.gov/edgar/document/thirteenf/informationtable" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <infoTable>
    <nameOfIssuer>Albany Molecular Research Conv</nameOfIssuer>
    <titleOfClass>CONV</titleOfClass>
    <cusip>012423AB5</cusip>
    <value>9133</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6400000</sshPrnamt>
      <sshPrnamtType>PRN</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>6400000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Envestnet Conv Sr Unsecd Note</nameOfIssuer>
    <titleOfClass>CONV</titleOfClass>
    <cusip>29404KAA4</cusip>
    <value>4203</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4000000</sshPrnamt>
      <sshPrnamtType>PRN</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4000000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ACI Worldwide</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>004498101</cusip>
    <value>9066</value>
    <shrsOrPrnAmt>
      <sshPrnamt>398000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>398000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Acxiom</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>005125109</cusip>
    <value>11347</value>
    <shrsOrPrnAmt>
      <sshPrnamt>460500</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>460500</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Advisory Board</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00762W107</cusip>
    <value>43325</value>
    <shrsOrPrnAmt>
      <sshPrnamt>807918</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>807918</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AeroVironment</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>008073108</cusip>
    <value>70592</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1304352</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1304352</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Alphabet Class A</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>02079K305</cusip>
    <value>1614</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1658</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1658</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Alphabet Class C</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>02079K107</cusip>
    <value>903</value>
    <shrsOrPrnAmt>
      <sshPrnamt>942</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>942</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ANSYS</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>03662Q105</cusip>
    <value>26856</value>
    <shrsOrPrnAmt>
      <sshPrnamt>218822</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>218822</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Aspen Technology</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>045327103</cusip>
    <value>1776</value>
    <shrsOrPrnAmt>
      <sshPrnamt>28280</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>28280</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Autozone</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>053332102</cusip>
    <value>2615</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4394</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4394</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Balchem</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>057665200</cusip>
    <value>1384</value>
    <shrsOrPrnAmt>
      <sshPrnamt>17030</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>17030</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Bio Techne</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>09073M104</cusip>
    <value>1161</value>
    <shrsOrPrnAmt>
      <sshPrnamt>9603</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>9603</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Blackbaud</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>09227Q100</cusip>
    <value>23200</value>
    <shrsOrPrnAmt>
      <sshPrnamt>264240</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>264240</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Cambrex</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>132011107</cusip>
    <value>31072</value>
    <shrsOrPrnAmt>
      <sshPrnamt>564948</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>564948</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Capella Education</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>139594105</cusip>
    <value>3239</value>
    <shrsOrPrnAmt>
      <sshPrnamt>46170</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>46170</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Charles River Labs</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>159864107</cusip>
    <value>15976</value>
    <shrsOrPrnAmt>
      <sshPrnamt>147900</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>147900</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Cognex</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>192422103</cusip>
    <value>104641</value>
    <shrsOrPrnAmt>
      <sshPrnamt>948864</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>948864</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CommVault Systems</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>204166102</cusip>
    <value>4864</value>
    <shrsOrPrnAmt>
      <sshPrnamt>80000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>80000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Computer Programs &amp; Systems</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>205306103</cusip>
    <value>716</value>
    <shrsOrPrnAmt>
      <sshPrnamt>24220</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>24220</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ComScore</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>20564W105</cusip>
    <value>3720</value>
    <shrsOrPrnAmt>
      <sshPrnamt>129398</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>129398</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Costar Group</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>22160N109</cusip>
    <value>13327</value>
    <shrsOrPrnAmt>
      <sshPrnamt>49681</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>49681</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CyberArk Software</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>M2682V108</cusip>
    <value>36919</value>
    <shrsOrPrnAmt>
      <sshPrnamt>900460</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>900460</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Dorman Products</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>258278100</cusip>
    <value>22150</value>
    <shrsOrPrnAmt>
      <sshPrnamt>309270</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>309270</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Ecolab</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>278865100</cusip>
    <value>848</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6593</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>6593</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>F5 Networks</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>315616102</cusip>
    <value>3669</value>
    <shrsOrPrnAmt>
      <sshPrnamt>30430</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>30430</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FactSet Research System</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>303075105</cusip>
    <value>50410</value>
    <shrsOrPrnAmt>
      <sshPrnamt>279884</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>279884</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Fastenal</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>311900104</cusip>
    <value>5458</value>
    <shrsOrPrnAmt>
      <sshPrnamt>119737</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>119737</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Federal Realty Invt Tr</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>313747206</cusip>
    <value>289</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2325</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2325</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Financial Engines</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>317485100</cusip>
    <value>4153</value>
    <shrsOrPrnAmt>
      <sshPrnamt>119510</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>119510</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Forrester Research</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>346563109</cusip>
    <value>16813</value>
    <shrsOrPrnAmt>
      <sshPrnamt>401752</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>401752</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Fortinet</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>34959E109</cusip>
    <value>33602</value>
    <shrsOrPrnAmt>
      <sshPrnamt>937560</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>937560</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Forward Air</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>349853101</cusip>
    <value>4256</value>
    <shrsOrPrnAmt>
      <sshPrnamt>74375</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>74375</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Franklin Electric</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>353514102</cusip>
    <value>20616</value>
    <shrsOrPrnAmt>
      <sshPrnamt>459655</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>459655</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Gentex</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>371901109</cusip>
    <value>47991</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2423813</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2423813</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Gigamon</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>37518B102</cusip>
    <value>48265</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1145067</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1145067</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Gilead Sciences</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>375558103</cusip>
    <value>3204</value>
    <shrsOrPrnAmt>
      <sshPrnamt>39546</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>39546</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Globant S.A.</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>L44385109</cusip>
    <value>251</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6270</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>6270</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Graham</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>384556106</cusip>
    <value>1310</value>
    <shrsOrPrnAmt>
      <sshPrnamt>62878</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>62878</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Haemonetics</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>405024100</cusip>
    <value>19182</value>
    <shrsOrPrnAmt>
      <sshPrnamt>427496</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>427496</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Healthcare Services Grp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>421906108</cusip>
    <value>17609</value>
    <shrsOrPrnAmt>
      <sshPrnamt>326274</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>326274</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>HMS Holdings</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>40425J101</cusip>
    <value>50126</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2523953</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2523953</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Hologic</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>436440101</cusip>
    <value>42430</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1156434</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1156434</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Home Depot</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>437076102</cusip>
    <value>3352</value>
    <shrsOrPrnAmt>
      <sshPrnamt>20491</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>20491</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ICON PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>G4705A100</cusip>
    <value>94088</value>
    <shrsOrPrnAmt>
      <sshPrnamt>826205</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>826205</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ID Systems</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>449489103</cusip>
    <value>240</value>
    <shrsOrPrnAmt>
      <sshPrnamt>32000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>32000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>IDEXX Laboratories</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>45168D104</cusip>
    <value>80407</value>
    <shrsOrPrnAmt>
      <sshPrnamt>517123</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>517123</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Illumina</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>452327109</cusip>
    <value>49344</value>
    <shrsOrPrnAmt>
      <sshPrnamt>247710</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>247710</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>IPG Photonic</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>44980X109</cusip>
    <value>26355</value>
    <shrsOrPrnAmt>
      <sshPrnamt>142415</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>142415</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Jack Henry &amp; Associates</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>426281101</cusip>
    <value>39226</value>
    <shrsOrPrnAmt>
      <sshPrnamt>381614</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>381614</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Kornit Digital Ltd.</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>M6372Q113</cusip>
    <value>16677</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1089968</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1089968</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Lindsay Manufacturing</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>535555106</cusip>
    <value>2776</value>
    <shrsOrPrnAmt>
      <sshPrnamt>30205</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>30205</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>LOGMEIN</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>54142L109</cusip>
    <value>202</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1840</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1840</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Manhattan Associates</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>562750109</cusip>
    <value>58509</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1407477</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1407477</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Medidata Solutions</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>58471A105</cusip>
    <value>27918</value>
    <shrsOrPrnAmt>
      <sshPrnamt>357643</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>357643</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Mednax</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>58502b106</cusip>
    <value>10742</value>
    <shrsOrPrnAmt>
      <sshPrnamt>249120</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>249120</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Merit Medical Systems</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>589889104</cusip>
    <value>11657</value>
    <shrsOrPrnAmt>
      <sshPrnamt>275245</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>275245</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Morningstar</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>617700109</cusip>
    <value>17330</value>
    <shrsOrPrnAmt>
      <sshPrnamt>203905</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>203905</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>National Instruments</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>636518102</cusip>
    <value>4048</value>
    <shrsOrPrnAmt>
      <sshPrnamt>95995</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>95995</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Natus Medical</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>639050103</cusip>
    <value>329</value>
    <shrsOrPrnAmt>
      <sshPrnamt>8770</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>8770</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NICE</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>653656108</cusip>
    <value>45834</value>
    <shrsOrPrnAmt>
      <sshPrnamt>563692</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>563692</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NuVasive</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>670704105</cusip>
    <value>9368</value>
    <shrsOrPrnAmt>
      <sshPrnamt>168919</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>168919</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>O'Reilly Automotive</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>67103H107</cusip>
    <value>258</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1200</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1200</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Paychex</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>704326107</cusip>
    <value>2676</value>
    <shrsOrPrnAmt>
      <sshPrnamt>44634</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>44634</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Proto Labs</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>743713109</cusip>
    <value>10784</value>
    <shrsOrPrnAmt>
      <sshPrnamt>134301</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>134301</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Quaker Chemical</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>747316107</cusip>
    <value>1036</value>
    <shrsOrPrnAmt>
      <sshPrnamt>7000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>7000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Qualys</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>74758T303</cusip>
    <value>1362</value>
    <shrsOrPrnAmt>
      <sshPrnamt>26300</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>26300</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Real Page</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>75606N109</cusip>
    <value>16455</value>
    <shrsOrPrnAmt>
      <sshPrnamt>412407</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>412407</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ResMed</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>761152107</cusip>
    <value>50310</value>
    <shrsOrPrnAmt>
      <sshPrnamt>653722</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>653722</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SEI Investments</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>784117103</cusip>
    <value>51650</value>
    <shrsOrPrnAmt>
      <sshPrnamt>845890</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>845890</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Spdr S&amp;P 500 Series 1</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78462F103</cusip>
    <value>1005</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>4000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Stericycle</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>858912108</cusip>
    <value>1094</value>
    <shrsOrPrnAmt>
      <sshPrnamt>15274</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>15274</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Tivity Health</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>88870R102</cusip>
    <value>37855</value>
    <shrsOrPrnAmt>
      <sshPrnamt>927828</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>927828</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Trimble</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>896239100</cusip>
    <value>31494</value>
    <shrsOrPrnAmt>
      <sshPrnamt>802402</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>802402</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Verint Systems</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92343x100</cusip>
    <value>48143</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1150365</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>1150365</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>WageWorks</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>930427109</cusip>
    <value>708</value>
    <shrsOrPrnAmt>
      <sshPrnamt>11670</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>11670</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Wright Medical Group N.V.</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>N96617118</cusip>
    <value>2780</value>
    <shrsOrPrnAmt>
      <sshPrnamt>107467</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>107467</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Zebra Technologies</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>989207105</cusip>
    <value>29651</value>
    <shrsOrPrnAmt>
      <sshPrnamt>273080</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>273080</None>
    </votingAuthority>
  </infoTable>
</informationTable>
