receive implementation