implemented non blocking communication