# Need help with Tutorial on upgradeProxy

**URL:** <https://forum.openzeppelin.com/t/need-help-with-tutorial-on-upgradeproxy/32152>\
**Category:** Smart Contracts\
**Tags:** upgrades\
**Created:** [September 30, 2022, 8:22am UTC](https://forum.openzeppelin.com/t/need-help-with-tutorial-on-upgradeproxy/32152 "2022-09-30T08:22:30Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![ericglau](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/ericglau/32/15149_2.png) [@ericglau](https://forum.openzeppelin.com/u/ericglau)\
**Post date:** [September 30, 2022, 9:54pm UTC](https://forum.openzeppelin.com/t/need-help-with-tutorial-on-upgradeproxy/32152/5 "2022-09-30T21:54:24Z")

</div>

Hi @Damien_Teo,

I'd like to clarify the concepts here on constructors vs. initializers:

- Generally an upgradeable implementation should not have a constructor. You should use an initializer to initialize your contract's logic.
- For [deployProxy](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#deploy-proxy), `args` and `initializer` are for the initializer's arguments and name, respectively.
- For [upgradeProxy](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#upgrade-proxy), if you need to call a function during the upgrade process, that is done with the `call?: string | { fn: string; args?: unknown[] },` option as you mentioned. This could be a function marked as [reinitializer](https://docs.openzeppelin.com/contracts/4.x/api/proxy#Initializable-reinitializer-uint8-) so that it can only be called once.
- A constructor with the below content is still recommended for disabling initialization of the implementation contract itself (at the implementation's address). The reasoning is described in [this post](https://forum.openzeppelin.com/t/is-disableinitializers-necessary/31070/2).

```auto
/// @custom:oz-upgrades-unsafe-allow constructor
constructor() {
    _disableInitializers();
}

```

---

_[View the full topic](https://forum.openzeppelin.com/t/need-help-with-tutorial-on-upgradeproxy/32152)._
