I've done the first half of dealing with the effiecency. I created a testbed in a console window stlye program. After making this work correctly. I intergrated it into my game program. Intergration meant lots of shuffling around and I suspect things are actually a bit slower now (efficency doesn't come until the second half). Anyway at first it was ungodly slow so I improved this by extending the tile definition. This can be reduced if it really becomes a problem - I'm not sure it will. I'll have to work out the memory constraints but this is in the optimizing stage which is a ways a way.
I've been having some interesting thoughts abou grammars but it all seems rather hard. I'll give it more thought as time approaches.
The second killing blow of my efficency update is pretty much worked out now. It will be pretty easy to get in but I don't think it will be ultimately efficent first time. Still it will be orders lower than before so it will be a noticable improvement.
Then I'm going to work hard on a design document and exactly what I wish to achieve for stage 2.