```\nfunction \_initialize(\n    string memory \_name,\n    string memory \_symbol,\n    uint8 \_decimals,\n    IControllerInterface \_controller,\n    IInterestRateModelInterface \_interestRateModel\n) internal virtual {\n    controller = \_controller;\n    interestRateModel = \_interestRateModel;\n    accrualBlockNumber = block.number;\n    borrowIndex = BASE;\n    flashloanFeeRatio = 0.0008e18;\n    protocolFeeRatio = 0.25e18;\n    \_\_Ownable\_init();\n    \_\_ERC20\_init(\_name, \_symbol, \_decimals);\n    \_\_ReentrancyGuard\_init();\n\n    uint256 chainId;\n\n    assembly {\n        chainId := chainid()\n    }\n    DOMAIN\_SEPARATOR = keccak256(\n        abi.encode(\n            keccak256(\n                "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"\n            ),\n            keccak256(bytes(\_name)),\n            keccak256(bytes("1")),\n            chainId,\n            address(this)\n        )\n    );\n}\n```\n