After Ethereum's consensus algorithm switched to PoS, the Ethereum ecosystem became filled with various staking services (i.e., liquid staking protocols & liquid restaking protocols).
Swell supports both ETH liquid staking and liquid restaking protocols, and is planning to build its own L2 network - Swell L2 - based on Polygon CDK.
Thanks to the features of Swell L2, which incorporates a variety of technology stacks, users can expect an enhanced experience in terms of usability and profitability with their re-staking tokens.
Staking is a concept that emerged in blockchains that use Proof-of-Stake consensus algorithms. Users contribute directly or indirectly to the operational and security aspects of the network by depositing cryptographic assets, and in return, they receive rewards. Today, Ethereum ecosystem users have access to various staking services to contribute to the network and diversify their yields. To understand why so many different staking services continue to emerge, it's necessary to take a closer look at the evolution of Ethereum.
Ethereum planned to shift from a proof-of-work to a proof-of-stake consensus algorithm to enhance energy efficiency and promote a safer, more decentralized network environment. As a preliminary step towards this transition, Ethereum launched the "Beacon Chain" in December 2020. The core of this update was to separate the existing layers handling consensus and execution into the Beacon Chain and an execution layer, syncing Ethereum 1.0’s performance with the Beacon Chain before fully transitioning to the new consensus algorithm. From this point, users could actively stake their Ethereum through the Beacon Chain, although initially, only deposits were allowed—the withdrawal feature was enabled later in April 2023 through the Shapella upgrade.
The Beacon Chain, which had been operating parallel to Ethereum 1.0, fully transitioned to a proof-of-stake mechanism on September 15, 2022, through an upgrade known as "The Merge," consequently eliminating the mining process. However, for users to generate and validate blocks and receive rewards, they needed to stake at least 32 ETH, which, while ostensibly allowing anyone to participate as a validator, posed a high entry barrier due to the significant funds and expertise required. To address these challenges, various staking protocols have been developed, including:
Solo Staking: Users directly stake their 32 ETH. This is the most traditional method of staking Ethereum but requires knowledge and resources to avoid downtime and slashing risks.
Staking as a Service: Users delegate their ETH to a service provider that manages the node operations, allowing them to receive block rewards without the need to possess technical knowledge or manage nodes themselves.
Pooled Staking: Users pool their ETH, and a managing entity operates the validators. Rewards are distributed proportionally to the amount staked by each individual, minus any fees charged by the pool operator. This method lowers entry barriers but requires trust in the pool operator.
Centralized Exchanges: Similar to pooled staking, users can easily delegate their ETH through the familiar interface of centralized exchanges.
Source: ethStaker
The various staking methods mentioned above provide an environment where users can deposit their ETH and earn rewards, contributing to the Ethereum ecosystem according to their individual circumstances.
Liquid staking protocols liquefy staked tokens to enhance the security of PoS networks. Users stake ETH and in return, receive a corresponding Liquid Staking Token (LST), such as 1 swETH for every 1 ETH staked. This swETH is tied to the staked assets at a 1:1 ratio, allowing users to leverage this LST in other DeFi protocols to generate additional income. Notable examples include Lido and Swell, with Lido currently holding about 9.6 million staked ETH, which accounts for roughly 30% of all staked Ethereum - the dominance of Lido and the presence of many LST protocols contribute to issues of centralization and liquidity fragmentation within the Ethereum community.
Introduced by Sreeram Kannan at Devconnect2022 in May 2022, EigenLayer's concept of 'liquid restaking' combines liquid staking and restaking. Users can restake the LST they obtained through liquid staking to receive a Liquid Restaking Token (LRT), thus maintaining the benefits of liquid staking. Unlike LSTs, which were confined to DeFi protocols, LRTs can enhance Ethereum's security through restaking, broadening their potential applications. Although liquid staking has garnered a lot of attention in the past, and many users are now paying attention to liquid restaking protocols, there are still concerns about liquidity fragmentation.
As of April 5, 2024, there are nearly one million validators, and more than 32 million ETH have been staked, representing about 26.8% of Ethereum's total supply.
The number of users staking ETH continues to rise, with liquid staking accounting for the highest proportion, as it allows users to earn solo staking rewards indirectly and generate additional income through LST. The recent introduction of the LRT protocol, which allows the restaking and liquefaction of LST, has drawn significant attention from users seeking strategic staking options.
Source: Liquid Restaking TVL, Liquid Restaking TVL
According to data from DefiLlama, when EigenLayer's liquid staking was launched in July 2023, users could only deposit limited amounts of specific tokens like rETH, stETH, and cnETH. The rapid growth in the TVL of liquid restaking since December 2023 has been fueled by EigenLayer incorporating additional liquidity-backed tokens (wBETH, osETH, swETH, ankrETH, ethX, oETH) and increasing deposit limits. Following the inclusion of three more tokens (sfrxETH, mETH, LsETH), EigenLayer now operates a total of 12 liquid staking protocols. Projects utilizing LRT are increasingly capturing user interest through airdrop and point farming strategies. Among these, Swell stands out by uniquely supporting both liquid staking and liquid restaking. Let's follow Swell's journey to understand how they started with ETH liquid staking and planned to build their own L2.
Swell is a non-custodial staking protocol in the Ethereum ecosystem, supporting both ETH liquid staking and ETH liquid restaking services. As mentioned above, to participate as a validator through solo staking, one needs either 1) over 32 ETH or 2) a certain level of knowledge about node ㅐoperation. For these reasons, liquid staking and liquid restaking have garnered significant interest from users, who can easily access these services through Swell - particularly, Swell offers a more intuitive UI/UX compared to other staking protocols. While most staking protocols only provide interfaces related to staking, Swell lists various DeFi strategies utilizing LSTs like swETH and LRTs like rswETH, along with detailed information on them, on its website. This allows users to easily leverage additional liquidity, one of the primary goals of liquid staking.
Source: Swell
2.2.1 Reward Distribution Mechanism
Swell's first product is ETH liquid staking. Users can deposit ETH to mint an equivalent amount of swETH. Here, swETH utilizes a reward-bearing mechanism for staking rewards. When ETH is staked, rewards are generated from block creation incentives in the consensus layer, tip rewards, and MEV profits in the execution layer. Typically, for interest payments, liquid staking protocols commonly utilize methods such as Rebasing, Dual Token, and Reward-bearing. Swell employs the Reward-bearing method, which can be efficiently utilized in DeFi protocols.
2.2.1.1 Rebasing
Lido's stETH is a prime example of the rebasing method. Users receive an equal amount of stETH when they stake their ETH. Notably, staking rewards don't accumulate directly on the token. Instead, once a day, an oracle reports the ETH staked and the corresponding rewards, causing an automatic increase in the stETH balance of users.
It's crucial to understand that Lido doesn't issue new stETH tokens as rewards or send them to users through transactions. Instead, users' stETH balances are updated daily. This is feasible because Lido stores information about users' shares in the total pool, not individual balances in a map form. Specifically, an account's balance is determined as follows:
balanceOf(account) = shares[account] * totalPooledEther / totalShares
Thus, a user's balance reflects their share of the total ETH staked in Lido. For instance, if Alice and Bob initially stake 2 ETH and 8 ETH respectively (totaling 10 ETH), their balances would be 2 stETH and 8 stETH. If the staking rewards increase the total staked ETH in Lido to 15 ETH over a few years, Alice's and Bob's balances would automatically update to 3 stETH and 12 stETH, respectively, without any transactions between Lido and the users.
While rebasing is simple to implement, it has downsides. First, its composability with DeFi protocols is limited due to its unique mechanism. To integrate rebased tokens into DeFi protocols, they often need to be wrapped, which is why wstETH exists. Initially, stETH faced compatibility issues with platforms like Uniswap, 1inch, and SushiSwap, causing users to miss out on interest if they deposited stETH there.
Secondly, there are tax implications. Depending on the jurisdiction, staking rewards might be taxable. With rebasing tokens, since the quantity of tokens increases, this could lead to taxation on the increased token count. In contrast, the reward-bearing approach, which will be discussed later, maintains the token quantity but accumulates value, potentially offering a more favorable tax structure.
2.2.1.2 Dual Token
Compared to the other two methods, dual tokens are not widely used, with Frax Finance's Frax Ether being a prominent example. The Frax Ether system consists of two types of tokens: frxETH and sfrxETH. Users can deposit ETH into Frax Ether to receive an equivalent amount of frxETH. However, holding frxETH alone does not yield interest; users must deposit frxETH into a vault to receive sfrxETH and earn staking rewards. Over time, rewards accumulate in sfrxETH, increasing the amount of frxETH that can be redeemed for sfrxETH. While the dual token approach can be easily implemented in DeFi protocols, it comes with the drawback of managing two types of tokens.
2.2.1.3 Reward-bearing
Reward-bearing tokens employ a mechanism where staking rewards accumulate in the token. When a user deposits ETH into the protocol, they receive LST of equivalent value. Unlike the previous two methods, it's essential to note that users receive LST of equivalent value, not an equal quantity. The exchange rate between LST and ETH is determined by the total ETH balance held by the protocol. For instance, suppose Alice deposited 1 ETH into the protocol at launch and received 1 LRT through the reward-bearing mechanism. Assuming a staking interest rate of 4% for ETH, Alice's LRT balance remains 1 LRT, but if she redeems it for ETH, she would receive 1.04 ETH. Swell precisely utilizes the reward-bearing mechanism. While reward-bearing tokens, unlike rebasing tokens, make it difficult for users to directly verify interest based on token quantity, they offer compatibility with DeFi protocols as they adhere to the ERC-20 standard like other regular tokens.
2.2.2 Swell Liquid Staking Contract Structure
Source: Swell Docs
Currently, a total of 8 node operators, including InfStones, HashQuark, DSRV, Kiln, RockX, Blockscape, Stakely, and snc.xyz, are managing and operating the Swell system. Node operators add their addresses to the node operator registry contract via a whitelist method under the management of Swell DAO. Subsequently, node operators gain the authority to add validator keys to the contract. In the future, as liquidity within Swell increases and risk prevention technologies like DVT are introduced to enhance stability, the system will transition to a permissionless approach.
Here's how the process works when a user stakes ETH:
When a user stakes ETH into Swell's swETH contract, they receive swETH of equivalent value.
The deposited ETH moves to the Deposit manager contract.
Once 32 ETH accumulates in the Deposit manager contract, a node operator is randomly selected from the registered operators via a round-robin method.
The selected node operator deposits the 32 ETH into the Ethereum deposit contract with their validator key and begins network validation.
Notably, the exchange rate between ETH and swETH is calculated daily by Chainlink's Proof of Reserve (PoR) oracle, confirming the ETH balance in the consensus layer. 90% of staking rewards go to users, 5% to the Swell DAO treasury, and 5% are distributed to node operators.
The withdrawal time for staked ETH via the native method varies significantly due to the exit queue on the beacon chain. However, Swell offers a feature to allow users to withdraw immediately without waiting by providing a buffer with staking rewards and daily deposited ETH. If the demand for withdrawals exceeds the buffer, withdrawal wait times may increase. Users who wish to avoid waiting can indirectly withdraw by selling swETH on the secondary market to buy ETH.
Furthermore, Swell collaborates with the crypto on-ramp service Transak to enable users to stake ETH via credit card payments. Through convenient withdrawal and on-ramp features, Swell demonstrates its commitment to enhancing user experience not only in staking but also in minor aspects.
2.3.1 EigenLayer
Swell also supports ETH liquid restaking and ETH liquid staking. As mentioned earlier, liquid restaking refers to further liquefying ETH staked on EigenLayer. So, what is EigenLayer?
EigenLayer is a restaking protocol built on the Ethereum network, allowing already staked ETH on the Ethereum network to be reused to maintain the economic security of other PoS protocols. Services that utilize the security of restaked ETH in the EigenLayer ecosystem are referred to as Actively Validated Services (AVSs). In other words, from the restaker's perspective, restaking ETH involves risks associated with both the Ethereum network and AVS slashing conditions, but it also brings rewards from both.
Introducing additional slashing conditions to ETH already staked on the Ethereum network is simpler than expected. When setting up nodes, ETH validators specify a withdrawal address to receive withdrawn ETH or rewards. EigenLayer operators designate the withdrawal address to the EigenLayer protocol's contract when setting up nodes, allowing the EigenLayer protocol to manage operator withdrawals and rewards. If an AVS operator engages in malicious behavior, EigenLayer has the authority to slash the operator's ETH according to the protocol.
2.3.2 rswETH
Swell users can stake ETH to issue rswETH of equal value. rswETH holders can receive rewards generated on the Ethereum network as well as profits generated by AVS. Similar to swETH, rewards generated on EigenLayer are accumulated in rswETH through a reward-bearing mechanism, increasing the value of rswETH over time. The contract structure related to rswETH is almost identical to that of swETH, with the difference being that instead of 32 ETH being staked directly to the Ethereum deposit contract at the end, it is staked through EigenLayer.
According to Dune Analytics data, the number of users staking ETH through Swell liquid staking is 100,000, with a total of 250,000 ETH staked. The number of users staking ETH through the restaking service is approximately 20,000, with 100,000 ETH staked, resulting in a total TVL of around $1.266 billion when combined. Additionally, swETH staked through EigenLayer amounts to 180,000, making it the second-largest liquid staking protocol in terms of LRT holdings.
One of the main reasons users utilize liquid staking platforms is to generate additional income by leveraging liquid tokens in DeFi protocols, and Swell supports various uses of swETH and rswETH. As the Swell ecosystem continues to expand, and with the recent unveiling of Swell L2, the utility of swETH and rswETH is expected to further increase.
2.5.1 Liquidity Provision (AMM)
Holders of the liquid token swETH can provide liquidity to the following AMM protocols to earn additional income, or withdraw staking positions through the liquidity pools below.
Uniswap: ETH-swETH
Balancer (Aura): weETH-ezETH-rswETH / wETH-swETH
Curve (Convex): weETH-rswETH / wETH-rswETH / swETH-frxETH
Maverick: weETH-rswETH / ETH-rswETH / ETH-swETH / USDC-swETH
Bunni (Liquis): wETH-swETH / GRAI-swETH
Kyberswap: wETH-swETH
TraderJoe: ETH-swETH
2.5.2 Restaking
Through Swell, you can restake ETH at once, but swETH holders can also restake swETH by staking it in EigenLayer.
2.5.3 Pendle Finance Related
Pendle Finance is an innovative protocol that allows the separation of interest-bearing portions (YT) and principal portions (PT) of tokens that generate interest. Holders of swETH and rswETH can provide liquidity to Pendle Finance with these tokens, swap them for YT to maximize interest, or swap them for PT to receive stable interest from the principal.
Similar to how various protocols secured CRV, the governance token of Curve Finance, to boost interest for users, Penpie and Equilibria provide services to boost users' interest by securing PENDLE, the governance token of Pendle Finance.
Pendle Finance: swETH, rswETH
Penpie: swETH Pendle LP, rswETH Pendle LP
Equilibria: swETH Pendle LP, rswETH Pendle LP
2.5.4 L2 Bridging
Recently, many L2 solutions have been providing points or token airdrops to users bridging ETH (i.e., Blast L2, Manta Pacific). The following L2 solutions offer Swell's liquid tokens as bridging assets.
Zircuit: swETH, rswETH
Karak: rswETH
2.5.5 Lending
Liquid tokens can be deposited as collateral to borrow other tokens.
Gravita: swETH
Myso: swETH
Raft: swETH
2.5.6 Vault
Liquid tokens can be deposited in vaults executing automated strategies to earn additional returns.
Sommelier Finance: swETH
Liquid restaking, a recently emerged concept, has gained considerable attention from both communities and investors. However, it entails additional risks in terms of liquidating tokens, as the slashing conditions increase twofold. Especially with the recent launch of numerous LRT protocols, many users are staking ETH without fully understanding the risks involved. In this section, we aim to explore the general risks associated with LRT.
Slashing: This is a fundamental risk applicable not only to LRT but also to LST. Assuming a specific LRT is free from risks such as withdrawals, liquidity, and smart contracts, slashing remains the sole risk. If an operator's mistake leads to slashing on the ETH network or AVS, the staked ETH decreases relative to the issued LRT, potentially reducing the value of the LRT.
Looping: It refers to the repeated process of staking LRT in lending protocols, borrowing ETH, converting it back to LRT, and restaking. Essentially, it's leveraged investing, and if the value of LRT declines due to events like slashing, it can trigger rapid liquidation by affecting the liquidation price in lending protocols.
Withdrawal: If there are LRT protocols that do not yet support ETH withdrawals, during events like liquidations, there may be an inability to repay, leading to a more rapid decline in the value of LRT (although the possibility is very slim).
Underlying assets: Some LRT protocols accept deposits not only in native ETH but also in other LST (i.e., stETH, cbETH, etc.). In this case, the list of supported LST protocols can also be weighted.
Smart Contract Risks: This is a risk inherent in all smart contracts. It is crucial to verify whether the smart contracts of LRT protocols have undergone audits and ensure the code is secure.
Governance: Since different AVSs are supported by different LRT protocols, the level of risk varies significantly depending on the supported AVS.
Swell has unveiled plans to launch its Swell L2 to maximize the utility of swETH and rswETH beyond staking protocols. Swell L2 will utilize zkEVM based on Polygon CDK and EigenDA as the data availability layer. With the recent decrease in DA costs via EIP-4844 and the release of various L2 SDKs (Software Development Kits), numerous L2 networks are being launched, making L2 construction more accessible. Swell L2 distinguishes itself from the many L2 networks currently being released.
Firstly, Swell utilizes its existing LRT, rswETH, as the native gas token. Users holding rswETH on Swell L2 can inherently receive rewards for staking. Secondly, it employs AltLayer's "Restaked Rollup" framework. Restaked Rollup offers the benefits of decentralized sequencing, decentralized verification, and fast finality by utilizing various AVS. Now, let's examine the components that make up Swell L2 one by one.
3.2.1 Polygon CDK
Polygon CDK is an L2 SDK within the Polygon ecosystem that assists developers in easily building zk L2 networks. It allows customization of various elements such as the data availability layer and native gas token. This is a key feature enabling Swell L2 to utilize rswETH as the default native gas token. The execution environment of L2 networks built with Polygon CDK is primarily based on the Polygon zkEVM technology stack, allowing validation of transaction validity in Ethereum through validity proofs. The structure of Polygon zkEVM is as follows.
Source: Polygon Docs
User transactions are stored in the Pool DB, which acts as a mempool, via RPC, and the sequencer validates the transactions and includes them in batches proposed to the Ethereum network. Subsequently, the aggregator generates proofs of validity for the proposed batch using zkProver and submits them to the Ethereum network, finalizing the state of L2 in the state DB.
The zkProver responsible for generating proofs of validity consists of components that create various state machines and STARK and SNARK proofs. The EVM bytecode resulting from the execution of transactions is transformed into zkASM language optimized for proof generation, which is then converted into a polynomial. The STARK builder recursively generates zk-STARK proofs based on the polynomial, ultimately deriving a single proof. While STARK is known for fast proof generation, it has the drawback of large size, which can be mitigated by the SNARK builder converting the proof into zk-SNARK proof, reducing its size.
3.2.2 AggLayer
AggLayer is a cross-chain layer native to the Polygon ecosystem, which not only supports zk L2 based on Polygon CDK but also allows any network capable of generating proofs of validity for execution to connect to AggLayer. As the name suggests, AggLayer aggregates proofs of validity from multiple networks, recursively compresses them, and submits a single proof to the Ethereum network.
In other words, networks connected to AggLayer can easily verify the validity of transactions among themselves. Validating transactions from other networks is crucial in cross-chain operations, and AggLayer facilitates this process, enabling zk networks within the AggLayer ecosystem to offer a seamless cross-chain experience. Utilizing AggLayer, Swell L2 is expected to enable smooth usage of swETH and rswETH across different networks as well.
EigenDA is a data availability solution developed by EigenLayer. The security of EigenDA relies on the node operators and staked ETH within EigenLayer. EigenDA enables L2 networks to securely and scalably store transaction data, allowing L2 networks to process transactions affordably and quickly.
There is a common misconception that EigenDA is a blockchain with a consensus algorithm. While many data availability layers like Celestia and Avail resemble blockchain in form, EigenDA is more akin to a decentralized autonomous corporation (DAC) rather than a blockchain. The key difference lies in the decentralized operators of EigenLayer rather than centralized entities.
The mechanism EigenDA uses to ensure data availability is similar to the core idea of Danksharding. Essentially, EigenDA's fundamental principle involves receiving blobs containing transaction data from L2s, erasure coding them, distributing data chunks to nodes, and using the KZG commitment scheme to prove whether specific data is included in the blob, thereby ensuring data availability.
Source: EigenDA Docs
The operation of EigenDA is as follows:
The L2 sequencer sends transaction data as a blob to the Disperser.
The Disperser expands the blob data using erasure coding, a method that allows the original data to be recovered even if only part of the data is known.
The expanded data is divided into chunks. The Disperser generates a KZG commitment and proof for each chunk and sends them all to various EigenDA operators.
EigenDA operators validate each chunk using the KZG commitment and proof. If operators have the KZG commitment and proof, they can easily verify whether the chunk is genuinely part of the original data.
Once verification is complete, EigenDA operators send their signatures back to the Disperser.
The Dispersers aggregate these signatures and upload them as calldata to the EigenDA Manager contract on the Ethereum network.
Now that the blob is stored by the EigenDA operators and the validity signatures are registered on-chain in Ethereum, the L2 sequencer stores the EigenDA blob ID, concluding the process.
Thus, through the above steps, EigenDA can securely store large volumes of data through node operators and ensure data availability without a separate consensus process. EigenDA is expected to demonstrate a data storage bandwidth of 10 MB/s at launch, meaning the transaction data for Swell L2 will be securely and scalably stored by EigenDA.
Swell L2 not only utilizes EigenDA, one of the AVSs, but also incorporates AltLayer's Restaked Rollup framework to introduce additional AVSs, thereby enhancing decentralization and UX. Restaked Rollup consists of three AVSs vertically integrated: VITAL for decentralized verification, MACH for fast finality, and SQUAD for decentralized sequencing. These AVSs benefit from economic security beyond staked ETH, including rollup tokens and AltLayer's native token ALT.
3.4.1 VITAL
Currently, most L2 networks operate a single sequencer during fraud and validity checks, or some networks lack a verification process altogether. It is technically challenging to decentralize the process of proving L2 states on L1, as evidenced by Optimism's recent introduction of a permissionless fraud-proof system on the testnet.
VITAL aims to decentralize the verification process of rollups. Operators registered with VITAL AVS validate new states proposed by SQUAD operators, as we'll explore below. VITAL employs various verification methods, including challenging through the bisection protocol if invalid state roots are detected, similar to Optimistic Rollup, and a hybrid verification method using zk-proofs for challenges, as recently used by LayerN, Morph, and Kroma.
3.4.2 MACH
One of the most criticized aspects of Ethereum-based L2 networks is slow finality. In Optimistic L2, transactions must wait until the challenge period ends for true finalization, while zk L2, though verifying transaction validity promptly, still relies on inclusion in the Ethereum network and considerable time until Ethereum blocks finalize.
To address this, many recent projects are introducing systems that allow for faster transaction finality by adding additional economic security assumptions. Similarly, MACH, one of the AVSs of Restaked Rollup, aims to introduce fast finality for L2 transactions. Pre-validating validity is crucial for transaction finalization, and VITAL is used for this purpose.
Recently, MACH Alpha was released, and AltLayer introduced ALT staking for its economic security. The security scale of staked ALT by users will be utilized for MACH, and it will be further enhanced when EigenLayer's mainnet launches and MACH is formally registered as an AVS.
3.4.3 SQUAD
SQUAD aims to introduce decentralized sequencing. Currently, almost all L2 networks use a single sequencer for transaction ordering, which presents issues like MEV profit monopolization, censorship resistance, and single point of failure. Operators of SQUAD can stake a certain amount of tokens to participate in rollup sequencing and receive rewards.
In addition, although not yet finalized, Swell plans to introduce a governance token, $SWELL, on its L2 network. This $SWELL token, along with $ALT and $rswETH, will form a Tri-Staking Model, allowing users to contribute to the security of Swell L2 AVSs and receive rewards.
In the Ethereum ecosystem, staking services have evolved around liquidity and usability, expanding into forms like liquid staking and liquid restaking. Thanks to the emergence of various service types, Ethereum has not only benefited in terms of security but has also enabled users to easily stake their assets and diversify their income activities. However, challenges such as liquidity fragmentation due to existence of various shadow tokens have started to pose problems in the LST/LRT market. Swell is addressing these by providing both liquid staking and restaking services, and is also planning to build its own Swell L2 by integrating the latest technologies for restaking.
At a time when participation in staking is increasing, the advent of solutions like Swell L2 is expected to not only improve the user experience but also solve various inherent problems within the entire Ethereum staking ecosystem, potentially ushering in a new era for the LST/LRT market development.
Thanks to Kate for designing the graphics for this article.