I created an ERC20 token that was minted through a Crowdsale contract that I can leveraged from the OpenZeppelin Solidity library. This crowdsale contract managed the entire process, allowing users to send ETH and get back PUP (PupperCoin). This contract minted the tokens automatically and distributed them to buyers in one transaction.