support multiple handler function