set to non-block