I did use forth a very long time ago but for a relatively simple diagnostic tool so I wasn't completely ignorant of stack based languages when coming to 8th. I look at new languages regularly and try them out, usually deciding in a fairly short time not to bother. Usually that is because I hit some problem or deficiency and nobody seems interested to fix/enhance as they are working to some internal fixed schedule. So the support you provide Ron is absolutely essential and is the reason I have battled on through many problems, some self-inflicted, some not.The last 2 days have been extremely trying and I have to admit I came close to binning the lot a few times but I have more or less come out the other end, a bit battered but otherwise operational. What caused this may be of some help in keeping others interested.The program is growing and there is a good code base of what I loosely call a framework. Key to the framework is models and listeners and publish/subscribe. Mix this in with several tasks a few g:do's and stir gently. I had one thing left in the current code base to do which was update the frequency in the custom controls once restored from the appropriate model. Every time I touched some code something unrelated broke and this went on for almost 2 days. It broke in very nasty ways with the .s hanging and the program exiting for example. Almost always it told me the thing I was seeing on the stack in a previous .s was in fact something else. Something was messing with my stack and the models were getting endlessly corrupted. I was also hampered by the task bug and the gash controls bug but I see 17.08 is due soonTwo things caused this chaos.- My stupidity in using the r stack. I wasn't keeping an eye on it and in refactoring had managed to corrupt it and subsequently corrupt the data stack. I now can't trust myself to keep the r stack straight so I ripped nearly all my use of r out of the program and made a rule that if I use it I will not call any words between >r and r> and leave it empty.- Listeners. I've been here before and I'm not sure I've got it right yet. I made another rule. A word that invokes a listener by a:! or m:! on a structure must make that the last call in the word and make sure the stack is cleaned up as far as it can before that call. Even then because of the various paths involved in the framework I found it impossible to clean up the stack completely as I went but knew that whatever else I did the SED of the listener must be correct because that is where all the model corruption comes from. I ended up cleaning up the stack at the end of each section called via a g:do to make sure it was left as found.So round and round I went fixing the same problems over and over wondering how on earth the app ever managed to work at all. Finally I got my custom controls to update. I've learned a lot and hopefully will never have to go through that again.