new implementation of transition event, added reversible option