Far be it for me to suggest something that Staz hasn't, but personally, I'd build an array (Array$(n,n)) to hold all the data, and whack this in and out of the resource fork on startup / closedown (if it changes). If you haven't got the code to move the array, let me know. On one project, I bring in about 10Mb on startup, and it's so fast you don't notice it. Then, you can index the array how you like ... Phil.