I'm thinking there are too many threads all running at the same time. Probably best to keep to one main thread so it's easier to follow.