# Stargate Composability

## StargateComposer.sol

StargateComposer is a wrapper contract used to add additional functionality to Stargate Composed calls. Now contracts that want to compose Stargate will need to call `swap` via the [StargateComposer](https://stargateprotocol.gitbook.io/stargate/stargate-composability/stargatecomposer.sol) contract instead of the [Stargate Router](https://stargateprotocol.gitbook.io/stargate/interfaces/evm-solidity-interfaces/istargaterouter.sol). The new StargateComposer adds the `msg.sender` into the payload so the destination `sgReceive` can now identify the source address that initiated the swap via the `_srcAddress`.

{% hint style="warning" %}
Composing Stargate will revert on source if not using the StargateComposer.
{% endhint %}

<img src="https://3165165563-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjRkKBuU2zPRNl4GR1WXy%2Fuploads%2FDVywY0ba0lhK3K8GOoAf%2Ffile.excalidraw.svg?alt=media&#x26;token=48f7394d-31ad-4768-b575-44f4170212f1" alt="StargateComposed deployed as a wrapper on both source and destination chains" class="gitbook-drawing">
