Wasn't robust at all, rewrote it to be more event driven, which seems to have fixed some of the issues