```\nfunction changeListing(\n  address tokenToDelist,              // Address of token to be delisted\n  address tokenToList,                // Address of token to be listed\n  uint112 listingTarget               // Amount of tokens needed to activate listing\n) external onlyListedToken(tokenToDelist) onlyOwner() {\n  // Basic validity checks. ETH cannot be delisted, only one delisting at a time.\n  require(tokenToDelist != address(0), "DFP: Cannot delist ETH");\n  ListingUpdate memory update = listingUpdate;\n  require(update.tokenToDelist == address(0), "DFP: Previous update incomplete");\n\n  // Can't list an already listed token\n  TokenSettings memory _token = listedTokens[tokenToList];\n  require(_token.state == State.Unlisted, "DFP: Token already listed");\n\n  // Set the delisting/listing struct.\n  update.tokenToDelist = tokenToDelist;\n  update.tokenToList = tokenToList;\n  listingUpdate = update;\n\n  // Configure the token states for incoming/outgoing tokens\n  _token.state = State.PreListing;\n  _token.listingTarget = listingTarget;\n  listedTokens[tokenToList] = _token;\n  listedTokens[tokenToDelist].state = State.Delisting;\n}\n```\n