Well looks like I'm up late again. My original Evolve engine started just about like the code that was posted. I'd like to describe where it was when it ended. It ended because all I had to work with was an 80386 50MHz machine and it just didn't have the computing power needed. It started off single pixel like the sample code. At the end I created 2x2 pixel entities. Just a few. After so many random pixels were plotted a scan would be made to look for new entities that had formed. They were stored in an array. They were immutable by random pixels. But the entities had rules of their own. They could bond, repel, move, destroy other entities. They formed chains. It was pseudo chemistry. However, with every random pixel having to be checked against the growing list of entities and checking for all the possibilities between entities quickly brought the simulation to a virtual standstill. So the idea was abandoned. One can imagine the possibilities! :)