More unique_ptrs
Use std::thread instead of posix or boost threads