abstract contract Ownable is IERC173, OwnableInternal {
  using OwnableStorage for OwnableStorage.Layout;

  /**
   * @inheritdoc IERC173
   */
  function owner () virtual override public view returns (address) {
    return OwnableStorage.layout().owner;
  }

  /**
   * @inheritdoc IERC173
   */
  function transferOwnership (
    address account
  ) virtual override public onlyOwner {
    OwnableStorage.layout().setOwner(account);
    emit OwnershipTransferred(msg.sender, account);
  }
}
/**
 * @title Ownership access control based on ERC173
 */
function transferOwnership (
  address account
) virtual override public onlyOwner {
  OwnableStorage.layout().setOwner(account);
  emit OwnershipTransferred(msg.sender, account);
}

/**
 * @inheritdoc IERC173
 */