Note
We recommend using relative paths in your development so that you can easily move content without having to update absolute paths. However, in JSON files, you have to use absolute paths (e.g. in the event of a marketplace upload).
## Equip an Item
You can equip an item by grabbing and holding an entity without pressing the grab button or trigger continuously. For example, you could equip a paint brush to your avatar's hand and drop it only when you're done painting.
You can equip an item using a script:
```javascript
Messages.sendLocalMessage('Hifi-Hand-Grab', JSON.stringify({hand: 'XXX', entityID: 'YYY'})); // where XXX is either the left or right hand and YYY is entityID to equip
```
To drop the entity from your avatar's hand:
```javascript
Messages.sendLocalMessage('Hifi-Hand-Drop', 'XXX'); // where XXX is either the left or right hand
```
## Connect a Signal to a Function
Signals can be connected to functions. This means that every time a signal is triggered, a function is executed. For example, if your avatar changes when collisions are enabled or disabled, you can connect a function to react to this specific event such as:
```
function collisionChanged(enabled) {
if(enabled) {
console.log("avatar collision is enabled");
} else {
console.log("avatar collision id disabled")
}
}
MyAvatar.collisionsEnabledChanged.connect(collisionChanged);
```
Each signal usually gets passed in arguments, and you can refer to the [API documentation](https://apidocs.highfidelity.com/MyAvatar.html) to see what a signal will provide you, such as the enabled property passed into collision changed.
It's good practice to disconnect from signals, but you can only do that if you name your function.
```
MyAvatar.collsionEnabledChanged.disconnect(collsionChanged);
```
**See Also**
+ [Write Your Own Scripts](write-scripts)
+ [API Reference](https://apidocs.highfidelity.com)