split up kinetic reaction network so that we don't need to supply
needless implementations of count()