implement optional handler chaining