Split the installer functionality into its own object