significantly refactored code to remove the mutex in favor of channels, not working yet but it does build -
lots of failing tests also