> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dairy.foundation/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

<Note>
  Mercurial is a Command Based library. It leverages systems from Core and
  Pasteurized to allow users to create powerful Commands with reduced boilerplate.
  It has a large focus on ease of use, in comparison to FTCLib.
</Note>

# Features:

* Improved DX (developer experience) over alternate solutions
  * Nearly no need to write Commands as Classes
  * Helpful error messages for exceptions in Commands
  * All common command structures available
  * Easy to use and read, "Nothing like FTCLib, and exactly the same at
    the same time"
* A thin wrapper over Pasteurized for gamepad utilities
* A thin wrapper over Core for subsystem utilities
* Unit tested command scheduler
* Unit tested error messages

# Installation:

<Note>
  Mercurial bundles a copy of Pasteurized along with itself, however, it may have
  newer updates than the current version of Mercurial, so check if you need to
  install it separately.
</Note>

<Warning>
  Currently, Mercurial depends on Util 1.0.1 (or newer), which is ahead of Core
  1.0.0, it must be installed separately.
</Warning>

1. Install Core

<Info>
  This only needs to be done once, if you already have this, no need to add it
  again.
</Info>

[Follow these instructions to install Core](/Core/overview).

2. Implementation

Add the newest version of Mercurial found
[here](https://repo.dairy.foundation/#/releases/dev/frozenmilk/mercurial/Mercurial)
to the `dependencies` block:

```gradle theme={null}
dependencies {
	// ...
	implementation "dev.frozenmilk.mercurial:Mercurial:<MAJ.MIN.ENG>"
	// ...
}
```

The repo will give you the line to add.

3. Sync

Run a gradle sync.
