protecting from errors.
don't create TMVar everytime.