TODO: 1) keep this operation atomic 2) return a flag to indicate whether this option is successful.
See Implementation
TODO: 1) keep this operation atomic 2) return a flag to indicate whether this option is successful.