multi-threaded process open to avoid blocking; refactor