zObjectList.Remove(z3) z3=Null FlushMem
Not quite sure if that will work, but give it a shot.
I generally create the list within the Create function, but first check if the list already exists...
If zObjectList=Null Then zObjectList=CreateList()
I've not seen your way of doing the creation before, but it looks neat and I can't think why it wouldn't work a treat.