refactor
implement FadeTransition