# Getting Started

**Import**[**​**](https://info.juicebox.money/dev/learn/risks/#import)

Add the protocol files to the project.

```solidity
# command linenpm install @Snowcones/snowcones-icy-contracts/
```

If referencing from typescript:

```solidity
const contract = require(`@Snowcones/snowcones-icy-contracts/deployments/${network}/${contractName}.json`)
```

If referencing from a contract:

```solidity
import '@Snowcone/snowcones-icy-contracts/contracts/[file-path].sol'
```

**Now what**[**​**](https://info.juicebox.money/dev/learn/risks/#now-what)

From here, you can build the following:

Basics - Interact with the protocol's basic functionality. Useful for building front-ends.&#x20;

Pay a project - Deploy or inherit from a contract that makes it easy to forward funds to Snowcone projects.

Split payments - Deploy or inherit from a contract that makes it easy to forward funds to groups of splits whose members are either addresses, Snowcone projects, or arbitrary contracts that inherit from `ISNOWSplitAllocator`.

Program a treasury - Get familiar with the configurable properties available when launching a project.&#x20;

Program project permissions - Build custom Snowcone Project NFT logic to create your own project access controls.

Program treasury extensions - Create custom contractual rules defining what happens when a project receives funds, and under what conditions funds can leave the treasury during a funding cycle.
