> The immutable keyword  allows variables to be set only once during the initial contract deployment. > Constant variables are initialized at compile time, while immutable variables are initialized at deployment time. Right now this contract costs 771423 gas to deploy. ``` // SPDX-License-Identifier: MIT pragma solidity ^0.8.18; import {PriceConverter} from "./PriceConverter.sol"; contract FundMe { using PriceConverter for uint256; uint256 public minimumUsd = 5; address[] public funders; mapping(address => uint256) public addressToAmountFunded; address public owner; constructor() { owner = msg.sender; } function fund() public payable { require( msg.value.getConversionRate() >= minimumUsd, "Didn't send enough ETH" ); funders.push(msg.sender); addressToAmountFunded[msg.sender] += msg.value; } function withdraw() public onlyOwner { for ( uint256 funderIndex = 0; funderIndex < funders.length; funderIndex++ ) { address funder = funders[funderIndex]; addressToAmountFunded[funder] = 0; } funders = new address[](0); (bool callSuccess, ) = payable(msg.sender).call{ value: address(this).balance }(""); require(callSuccess, "Send failed"); } modifier onlyOwner() { require(msg.sender == owner, "Sender is not owner"); _; } } ``` > If we change the minimumUsd value to be a constant we save 23k gas