ok, solved this one...

Need to declare each object as a new variable - compound statements like :

string str = applicationObject.CurrentProject.Name;

create hidden objects that do not have their reference count decremented during the normal garbage collection process, preventing the app from closing.

Thank you to knowledge base article 317109