fixed transition logic