improve new way to ->recv