optional block for listen