some interface design on handlers