change receiver to having own thread