a) use ioworker directly
b) fix the shutdown bug