change a little bit structure. Extract RichbannerEngine for clarify logic