Hmmm, i see a bunch of similar parsing on '_' here. I feel that many of them would be neater and more efficient if you used SplitStringIntoTokensOnDelimiter() instead. I'll leave it upto you to make a call on which ones can be replaced.