shadow listen method instead of read and then
fix back compat