Oh, as for performance optimization, the only place (I can think of right now) that is worth parallelizing is the Integral defuzzifiers (e.g. Centroid, Bisector, etc). While it should be straightforward to do that, it involves using external libraries (e.g. Intel’s Building Blocks) that I have no plans to make fuzzylite dependant upon. Nonetheless, I will eventually make the defuzzifiers work in parallel if the library is available via MACRO definitions.