added blocking support