hasTransition refactor