Hopefully we can refactor the logic in the setup script to separate composable files for easier testing and maintenance.