It was a good theory (GameData being set in multiple locations), but it's only ever set (created) once.

I should clarify one thing (that may help). when i say GameData is empty when i try to access it after the thread runs that sets it, I am referring the the sub values. the GameData variable/object itself does contain all the sub variables, but they are all blank/empty/default states. this is why i think it's something i missed in the class creation code.. (OP), as the sub variables are all set and usable while in the thread. it's only when it exits the thread that they vanish.