this allows these functions to be connected as receivers
don't wrap this in a function