refactored contact transitions