refactor SASyncOperation