> For the complete documentation index, see [llms.txt](https://tomorrowlend.gitbook.io/tommorrowlend/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tomorrowlend.gitbook.io/tommorrowlend/protocol/tomorrow-repos/margin-maintenance.md).

# Margin maintenance

### Tommorrow Repo Lockers

Each Tomorrow Repo has a Tomorrow Repo Locker, which is a smart contract that locks collateral on behalf of borrowers and lenders for that Term Repo.

{% hint style="info" %}
By segregating Tomorrow Repo Lockers by maturity and purchase token/collateral token pairs rather than instituting a single large commingled collateral pool reduces user exposure to cybersecurity risks and exploits.&#x20;
{% endhint %}

### Price oracle

All borrower balances, including collateral and repurchase balances are valued in USD using decentralized price oracles (primarily [Chainlink](https://chain.link/)). These oracles are source of truth for the fair-market value of all tokens on the Protocol (including all collateral tokens) and are decentralized to mitigate against unilateral attack by a malicious data provider (for more information, see risk disclosures on oracle risk).

### Withdraw collateral

If at any time a borrower has margin excess, the borrower may withdraw collateral by calling the public function `externalUnlockCollateral`.  A borrower may not make any withdrawals that would put their account into a margin deficit.

### Add collateral

If at any time a borrower wishes to post additional margin to their account as additional buffer against liquidation, they may do so by calling the public function `externalLockCollateral`. There are not limits to the amount of collateral a borrower my lock in this manner.
