# `InterfaceDetectionStorage.sol`: Unused import `ProxyInitialization` `ProxyInitialization` is not used in `InterfaceDetectionStorage` even though it is imported. ## Recommendation Remove the unused import. # `ForwarderRegistry.sol` and `ERC20PermitStorage.sol`: The Domain Separators in `_calculateDomainSeparator()` and `DOMAIN_SEPARATOR()` do not conform to EIP712 [EIP712 suggests the following fields when calculating a domain separator](https://eips.ethereum.org/EIPS/eip-712): * `string name` the user readable name of signing domain, i.e. the name of the DApp or the protocol. * `string version` the current major version of the signing domain. Signatures from different versions are not compatible. * `uint256 chainId` the EIP-155 chain id. The user-agent should refuse signing if it does not match the currently active chain. * `address verifyingContract` the address of the contract that will verify the signature. The user-agent may do contract specific phishing prevention. * `bytes32 salt` an disambiguating salt for the protocol. This can be used as a domain separator of last resort. ## Recommendation Include a `version` and `salt` when calculating the domain separator. # `ERC721Storage.sol`: Typo in return variable name of `_tokenHasApproval()` ## Recommendation `tokenSasApproval` should be `tokenHasApproval`.