Recently I have rediscovered lego. Its very useful to build a model of that data structure you want. When you have your physical model then its easy to think out all kinds of senarios that data structure possible could be used for. Here is a picture of my lego model: http://aeditor.rubyforge.org/data/lego_model_of_caching_system.jpg I wanted to make a new improved syntax coloring system for my editor, in paticular a robust caching scheme. The old caching mechanism sometimes didn't render dirty lines, other times it didn't flag lines as being dirty, ofthen it did too much work by rendering more lines than necessary.... and yet other times it crashed. My new data structure is robust and doesn't do more work than absolutely necesary. I don't believe that I would have gotten this far without lego. -- Simon Strandgaard