# Fees

## FeeHandler

The core contract for registering, settling, and distributing fees.

See [fees](https://docs.enzyme.finance/onyx-protocol/architecture/fees "mention") for the configuration and mechanics.

## Management Fees

### ContinuousFlatRateManagementFeeTracker

Uses an annualized rate (e.g., 10%) to apply a time-based fee on net value.

Config:

* `rate` : annualized fee percentage

Setup:

1. Call `setRate(rate)`: sets `rate`
2. Call `resetLastSettled()`: initializes fee with current timestamp

Notes:

* `resetLastSettled()` can be called at any time to re-initialize fee with current timestamp (e.g., after updating the rate).

## Performance Fees

### ContinuousFlatRatePerformanceFeeTracker

Uses a flat rate (e.g., 10%) to apply a performance-based fee on net share value growth.

Config:

* `rate` : fee percentage applied to share value growth

Setup:

1. Call `setRate(rate)`: sets `rate`&#x20;
2. Call `resetHighWaterMark()`: initializes fee with current share price as the HWM

Fee Mechanics:

* If `currentNetShareValue > HWM`, then:
  * the fee is settled as: `fee = rate * valueIncreasePerShare * numberOfShares`&#x20;
  * HWM is updated
* Performance is *only* charged on value increase above the HWM

Notes:

* `resetHighWaterMark()` can be called at any time to re-initialize fee with the current share price as HWM (e.g., to have granular performance periods).
* Due to the fee mechanics, to the extent and duration that  `currentNetShareValue < HWM`, investors have a "free ride".
