roll back and refact @Result handler