Factor out viewer program into its own repository