# What is the motivation to use ownership from sway-libs?

**URL:** <https://forum.fuel.network/t/what-is-the-motivation-to-use-ownership-from-sway-libs/3565>\
**Category:** Sway\
**Created:** [November 7, 2023, 1:49pm UTC](https://forum.fuel.network/t/what-is-the-motivation-to-use-ownership-from-sway-libs/3565 "2023-11-07T13:49:05Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![calldelegation](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.fuel.network/calldelegation/32/1484_2.png) [@calldelegation](https://forum.fuel.network/u/calldelegation)\
**Post date:** [November 7, 2023, 3:33pm UTC](https://forum.fuel.network/t/what-is-the-motivation-to-use-ownership-from-sway-libs/3565/2 "2023-11-07T15:33:09Z")

</div>

Hey @fuel! 🙂

The example does not follow the standard. The standard states that there must be a function [fn owner() → State](https://github.com/FuelLabs/sway-standards/tree/master/standards/src_5#fn-owner---state) where [state](https://github.com/FuelLabs/sway-standards/tree/master/standards/src_5#state) is an enum with 3 variants and revert with a [NotOwner](https://github.com/FuelLabs/sway-standards/tree/master/standards/src_5#--notowner) error. The intent of the standard it to enable compatibility BETWEEN contracts, not limit the implementation. Your first example can follow the standard by implementing the [SRC5](https://github.com/FuelLabs/sway-standards/blob/07b856544fc1e88e1fb988dd25d79275431ac2ef/standards/src_5/src/src_5.sw#L38) abi like this:

```auto
impl SRC_5 for Contract {
     fn owner() -> State {
          if OWNER == ZERO_B256 {
               State::Uninitialized
          } else {
               State::Initialized(Identity::Address(Address::from(OWNER))
          }
      }
}

```

---

_[View the full topic](https://forum.fuel.network/t/what-is-the-motivation-to-use-ownership-from-sway-libs/3565)._
