use thread.hpp instead of very specific one