finish the 1st draft of blocking send