add cor(Chain of Responsibility) pattern to resolve this kind of
problem.