ERC20 metadata and ERC20Detailed

Hi @jaureguino,

To keep your system secure, you should always use the installed code as-is, and neither copy-paste it from online sources, nor modify it yourself.
https://docs.openzeppelin.com/contracts/3.x/#usage

I recommend importing OpenZeppelin Contracts rather than copying.

OpenZeppelin Contracts 2.x supports Solidity 0.5
OpenZeppelin Contracts 3.x supports Solidity 0.6 and 0.7
OpenZeppelin Contracts 4.0 (currently release candidate) supports Solidity 0.8

For creating a token today I would look at using OpenZeppelin Contracts 4.0 when it is released (depending on your timeline).

There isn't a lot of complexity in your token, other than minting at certain stages and being pausable.

Depending on your use case, you could instead mint tokens into TokenTimelock (https://docs.openzeppelin.com/contracts/3.x/api/token/erc20#TokenTimelock) contracts if locking for a specific period of time. Though you should consider addressing: Bypassing Smart Contract Timelocks

Metadata was merged into ERC20 in OpenZeppelin Contracts 3.x

For 2.5.1 we can use the release tag:

Unless you need Solidity 0.5 you could be using a later version of OpenZeppelin Contracts and Solidity.