Receiver doesn't need to be public