block threads instead of read