To deploy with proper verification on Etherscan, use the scripts in package.json.
The factory must be deployed first, followed by the controller. After these two, the pool, initializer and seller implementations can be deployed in any order.
The deploy scripts can be run with:
yarn deploy:<contract> <network>
e.g.
yarn deploy:pool mainnet
npm run test
npm run coverage