there appears to be some duplication in this logic between this method and in `send`. Do you think it could be resolved or would you like to do it in a separate pull?