# Hands, controllers & boundary

Platform integrations implement small **adapter interfaces**; you get the active one from a per-platform factory (`…AdapterFactory.GetAdapter()`) and register your own with `Register<T>(PlatformType)`.

:::note
⚠️ The hands/controller factories cache the adapter on the first `GetAdapter()` call, so a later call with a different `PlatformType` returns the already-cached adapter. The hands/controller factories throw if a platform is registered twice; `BoundaryAdapterFactory` overwrites instead.
:::

## Hands

### IHandsAdapter

Moved to [`IHandsAdapter`](/docs/sdk-api/unity-api/classes/adapters).

### HandJointInfo

Moved to [`HandJointInfo`](/docs/sdk-api/unity-api/classes/hand-data).

### HandType

Moved to [`HandType`](/docs/sdk-api/unity-api/classes/hand-data).

### HandJointType

Moved to [`HandJointType`](/docs/sdk-api/unity-api/classes/hand-data).

### Hand helpers

Moved to [`Hand helpers`](/docs/sdk-api/unity-api/classes/hand-data).

## Controllers

### IControllerAdapter

Moved to [`IControllerAdapter`](/docs/sdk-api/unity-api/classes/adapters).

### ControllerInfo

Moved to [`ControllerInfo`](/docs/sdk-api/unity-api/classes/adapters).

### ControllerType

Moved to [`ControllerType`](/docs/sdk-api/unity-api/classes/adapters).

## Boundary

### IBoundaryAdapter

Moved to [`IBoundaryAdapter`](/docs/sdk-api/unity-api/classes/adapters).

## Factories

Moved to [`Factories`](/docs/sdk-api/unity-api/classes/adapters).

---

Next: [Recording, anchors & utilities](/docs/sdk-api/unity-api/recording-utilities).
