add a cancel operation option and remove constructor