Return shared_ptr of Option, instead of raw pointer, I'm sure about this.