contract NFTSafeHook is ERC721SafeHooksUpgradeable {

    /**
    * @notice initializes contract
    */
    function initialize(
        string memory name_, 
        string memory symbol_, 
        string memory contractURI_,
        address costManager_,
        address producedBy_
    ) 
        public 
        initializer 
    {
        __Ownable_init();
        __ReentrancyGuard_init();
        __ERC721SafeHook_init(name_, symbol_, costManager_, producedBy_);
        _contractURI = contractURI_;

    }
}
/**
 * NFT with safe hooks support
 */
function initialize(
    string memory name_, 
    string memory symbol_, 
    string memory contractURI_,
    address costManager_,
    address producedBy_
) 
    public 
    initializer 
{
    __Ownable_init();
    __ReentrancyGuard_init();
    __ERC721SafeHook_init(name_, symbol_, costManager_, producedBy_);
    _contractURI = contractURI_;

}

/**
 * @notice initializes contract
 */