io for thread-safety