```\n// UsdoOptionReceiverModule.sol\n\nfunction exerciseOptionsReceiver(address srcChainSender, bytes memory _data) public payable {\n        \n        // rest of code \n        \n        ITapiocaOptionBroker(_options.target).exerciseOption(\n            _options.oTAPTokenID,\n            address(this), //payment token \n            _options.tapAmount \n        ); \n        \n        // rest of code\n \n        address tapOft = ITapiocaOptionBroker(_options.target).tapOFT();\n        if (msg_.withdrawOnOtherChain) {\n          // rest of code \n\n            // Sends to source and preserve source `msg.sender` (`from` in this case).\n            _sendPacket(msg_.lzSendParams, msg_.composeMsg, _options.from); \n\n            // Refund extra amounts\n            if (_options.tapAmount - amountToSend > 0) {\n                IERC20(tapOft).safeTransfer(_options.from, _options.tapAmount - amountToSend);\n            }\n        } else {\n            //send on this chain\n            IERC20(tapOft).safeTransfer(_options.from, _options.tapAmount);\n        }\n        }\n    } \n```\n