per code review, using STL classes.  sharing data with thread by value.  various refactoring and cleanup