# CCIP v1.5.1 Ownable2StepMsgSender Contract API Reference
Source: https://docs.chain.link/ccip/api-reference/evm/v1.5.1/ownable-2-step-msg-sender

> For the complete documentation index, see [llms.txt](/llms.txt).

> **NOTE: Integrate Chainlink CCIP v1.5.1 into your project**
>
> npm
> yarn
> foundry
>
> If you use [NPM](https://www.npmjs.com/), install the [@chainlink/contracts-ccip NPM package](https://www.npmjs.com/package/@chainlink/contracts-ccip):
>
> ```shell
> npm install @chainlink/contracts-ccip@1.5.1-beta.0
> ```
>
> If you use [Yarn](https://yarnpkg.com/), install the [@chainlink/contracts-ccip NPM package](https://www.npmjs.com/package/@chainlink/contracts-ccip):
>
> ```shell
> yarn add @chainlink/contracts-ccip@1.5.1-beta.0
> ```
>
> If you use [Foundry](https://book.getfoundry.sh/), install the package:
>
> ```shell
> forge install smartcontractkit/ccip@5e7b2096586bc32c6e975fc13f4c411eb687f833
> ```

## Ownable2StepMsgSender

A contract that facilitates two-step ownership transfer, providing enhanced security for ownership management. This contract extends `Ownable2Step` and automatically sets the deploying address (`msg.sender`) as the initial owner with no pending owner.

**Inherits:**

- [`Ownable2Step`](/ccip/api-reference/evm/v1.5.1/ownable-2-step) - Provides secure two-step ownership transfer functionality

> **NOTE**
>
> The two-step ownership transfer process enhances security by:
>
> 1. Requiring the current owner to initiate the transfer (step 1)
> 2. Requiring the new owner to accept ownership (step 2)
>
> This prevents accidental transfers to incorrect or inaccessible addresses.

[Git Source](https://github.com/smartcontractkit/ccip/blob/0df0625eea603ba8572d5382d72979a7f2b12bfb/contracts/src/v0.8/shared/access/Ownable2StepMsgSender.sol)

## Functions

### constructor

Initializes the contract with the deploying address as the owner and no pending owner.

```solidity
constructor() Ownable2Step(msg.sender, address(0));
```

> **NOTE**
>
> The constructor:
>
> - Sets `msg.sender` as the initial owner
> - Sets `address(0)` as the initial pending owner (indicating no pending transfer)
> - Inherits from Ownable2Step with these initial values