Repository: osbuild/osbuild-composer
Pull request #2823 (2022-07-12 10:53:48)

Remove osbuild1 package
Since #2805, the `osbuild1` package is no longer required.  We only keep around some code for parsing results from jobs that used v1 manifests.  The `osbuild2` package has also been renamed to plain `osbuild`.


Patch:
diff --git a/cmd/osbuild-playground/playground.go b/cmd/osbuild-playground/playground.go
index 69643678d..051edf9be 100644
--- a/cmd/osbuild-playground/playground.go
+++ b/cmd/osbuild-playground/playground.go
@@ -8,7 +8,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/distro"
 	"github.com/osbuild/osbuild-composer/internal/dnfjson"
 	"github.com/osbuild/osbuild-composer/internal/manifest"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/osbuild/osbuild-composer/internal/runner"
 )
@@ -50,7 +50,7 @@ func RunPlayground(img ImageType, d distro.Distro, arch distro.Arch, repos map[s
 
 	store := path.Join(state_dir, "osbuild-store")
 
-	_, err = osbuild2.RunOSBuild(bytes, store, "./", img.GetExports(), []string{"build"}, false, os.Stdout)
+	_, err = osbuild.RunOSBuild(bytes, store, "./", img.GetExports(), []string{"build"}, false, os.Stdout)
 	if err != nil {
 		fmt.Fprintf(os.Stderr, "could not run osbuild: %s", err.Error())
 	}
diff --git a/cmd/osbuild-worker/jobimpl-koji-finalize.go b/cmd/osbuild-worker/jobimpl-koji-finalize.go
index f3ce8858c..2e21cfbae 100644
--- a/cmd/osbuild-worker/jobimpl-koji-finalize.go
+++ b/cmd/osbuild-worker/jobimpl-koji-finalize.go
@@ -7,7 +7,7 @@ import (
 
 	"github.com/sirupsen/logrus"
 
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/osbuild/osbuild-composer/internal/target"
 	"github.com/osbuild/osbuild-composer/internal/upload/koji"
diff --git a/cmd/osbuild-worker/jobimpl-osbuild-koji.go b/cmd/osbuild-worker/jobimpl-osbuild-koji.go
index 2df73d738..794cc4850 100644
--- a/cmd/osbuild-worker/jobimpl-osbuild-koji.go
+++ b/cmd/osbuild-worker/jobimpl-osbuild-koji.go
@@ -10,7 +10,7 @@ import (
 	"github.com/sirupsen/logrus"
 
 	"github.com/osbuild/osbuild-composer/internal/common"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/upload/koji"
 	"github.com/osbuild/osbuild-composer/internal/worker"
 	"github.com/osbuild/osbuild-composer/internal/worker/clienterrors"
@@ -145,7 +145,7 @@ func (impl *OSBuildKojiJobImpl) Run(job worker.Job) error {
 			result.JobError = clienterrors.WorkerClientError(clienterrors.ErrorBuildJob, err.Error())
 			return err
 		}
-		result.OSBuildOutput, err = osbuild2.RunOSBuild(args.Manifest, impl.Store, outputDirectory, exports, nil, true, os.Stderr)
+		result.OSBuildOutput, err = osbuild.RunOSBuild(args.Manifest, impl.Store, outputDirectory, exports, nil, true, os.Stderr)
 		if err != nil {
 			return err
 		}
diff --git a/cmd/osbuild-worker/jobimpl-osbuild.go b/cmd/osbuild-worker/jobimpl-osbuild.go
index d8a7f8997..f055f2068 100644
--- a/cmd/osbuild-worker/jobimpl-osbuild.go
+++ b/cmd/osbuild-worker/jobimpl-osbuild.go
@@ -13,7 +13,7 @@ import (
 	"strings"
 
 	"github.com/osbuild/osbuild-composer/internal/container"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/upload/oci"
 
 	"github.com/google/uuid"
@@ -202,7 +202,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
 	// Initialize variable needed for reporting back to osbuild-composer.
 	var osbuildJobResult *worker.OSBuildJobResult = &worker.OSBuildJobResult{
 		Success: false,
-		OSBuildOutput: &osbuild2.Result{
+		OSBuildOutput: &osbuild.Result{
 			Success: false,
 		},
 		UploadStatus: "failure",
@@ -306,7 +306,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
 	}
 
 	// Run osbuild and handle two kinds of errors
-	osbuildJobResult.OSBuildOutput, err = osbuild2.RunOSBuild(jobArgs.Manifest, impl.Store, outputDirectory, exports, nil, true, os.Stderr)
+	osbuildJobResult.OSBuildOutput, err = osbuild.RunOSBuild(jobArgs.Manifest, impl.Store, outputDirectory, exports, nil, true, os.Stderr)
 	// First handle the case when "running" osbuild failed
 	if err != nil {
 		osbuildJobResult.JobError = clienterrors.WorkerClientError(clienterrors.ErrorBuildJob, "osbuild build failed")
diff --git a/internal/cloudapi/v2/handler.go b/internal/cloudapi/v2/handler.go
index 87dfc0bad..9dc4bab3d 100644
--- a/internal/cloudapi/v2/handler.go
+++ b/internal/cloudapi/v2/handler.go
@@ -17,7 +17,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/ostree"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/osbuild/osbuild-composer/internal/target"
diff --git a/internal/distro/image_config.go b/internal/distro/image_config.go
index 94cdb1d39..f8847c00c 100644
--- a/internal/distro/image_config.go
+++ b/internal/distro/image_config.go
@@ -1,6 +1,6 @@
 package distro
 
-import "github.com/osbuild/osbuild-composer/internal/osbuild2"
+import "github.com/osbuild/osbuild-composer/internal/osbuild"
 
 type RHSMSubscriptionStatus string
 
@@ -12,13 +12,13 @@ const (
 // ImageConfig represents a (default) configuration applied to the image
 type ImageConfig struct {
 	Timezone            string
-	TimeSynchronization *osbuild2.ChronyStageOptions
+	TimeSynchronization *osbuild.ChronyStageOptions
 	Locale              string
-	Keyboard            *osbuild2.KeymapStageOptions
+	Keyboard            *osbuild.KeymapStageOptions
 	EnabledServices     []string
 	DisabledServices    []string
 	DefaultTarget       string
-	Sysconfig           []*osbuild2.SysconfigStageOptions
+	Sysconfig           []*osbuild.SysconfigStageOptions
 
 	// List of files from which to import GPG keys into the RPM database
 	GPGKeyFiles []string
@@ -31,29 +31,29 @@ type ImageConfig struct {
 
 	// for RHSM configuration, we need to potentially distinguish the case
 	// when the user want the image to be subscribed on first boot and when not
-	RHSMConfig         map[RHSMSubscriptionStatus]*osbuild2.RHSMStageOptions
-	SystemdLogind      []*osbuild2.SystemdLogindStageOptions
-	CloudInit          []*osbuild2.CloudInitStageOptions
-	Modprobe           []*osbuild2.ModprobeStageOptions
-	DracutConf         []*osbuild2.DracutConfStageOptions
-	SystemdUnit        []*osbuild2.SystemdUnitStageOptions
-	Authselect         *osbuild2.AuthselectStageOptions
-	SELinuxConfig      *osbuild2.SELinuxConfigStageOptions
-	Tuned              *osbuild2.TunedStageOptions
-	Tmpfilesd          []*osbuild2.TmpfilesdStageOptions
-	PamLimitsConf      []*osbuild2.PamLimitsConfStageOptions
-	Sysctld            []*osbuild2.SysctldStageOptions
-	DNFConfig          []*osbuild2.DNFConfigStageOptions
-	SshdConfig         *osbuild2.SshdConfigStageOptions
-	Authconfig         *osbuild2.AuthconfigStageOptions
-	PwQuality          *osbuild2.PwqualityConfStageOptions
-	WAAgentConfig      *osbuild2.WAAgentConfStageOptions
-	Grub2Config        *osbuild2.GRUB2Config
-	DNFAutomaticConfig *osbuild2.DNFAutomaticConfigStageOptions
-	YumConfig          *osbuild2.YumConfigStageOptions
-	YUMRepos           []*osbuild2.YumReposStageOptions
-	Firewall           *osbuild2.FirewallStageOptions
-	UdevRules          *osbuild2.UdevRulesStageOptions
+	RHSMConfig         map[RHSMSubscriptionStatus]*osbuild.RHSMStageOptions
+	SystemdLogind      []*osbuild.SystemdLogindStageOptions
+	CloudInit          []*osbuild.CloudInitStageOptions
+	Modprobe           []*osbuild.ModprobeStageOptions
+	DracutConf         []*osbuild.DracutConfStageOptions
+	SystemdUnit        []*osbuild.SystemdUnitStageOptions
+	Authselect         *osbuild.AuthselectStageOptions
+	SELinuxConfig      *osbuild.SELinuxConfigStageOptions
+	Tuned              *osbuild.TunedStageOptions
+	Tmpfilesd          []*osbuild.TmpfilesdStageOptions
+	PamLimitsConf      []*osbuild.PamLimitsConfStageOptions
+	Sysctld            []*osbuild.SysctldStageOptions
+	DNFConfig          []*osbuild.DNFConfigStageOptions
+	SshdConfig         *osbuild.SshdConfigStageOptions
+	Authconfig         *osbuild.AuthconfigStageOptions
+	PwQuality          *osbuild.PwqualityConfStageOptions
+	WAAgentConfig      *osbuild.WAAgentConfStageOptions
+	Grub2Config        *osbuild.GRUB2Config
+	DNFAutomaticConfig *osbuild.DNFAutomaticConfigStageOptions
+	YumConfig          *osbuild.YumConfigStageOptions
+	YUMRepos           []*osbuild.YumReposStageOptions
+	Firewall           *osbuild.FirewallStageOptions
+	UdevRules          *osbuild.UdevRulesStageOptions
 }
 
 // InheritFrom inherits unset values from the provided parent configuration and
diff --git a/internal/distro/rhel7/azure.go b/internal/distro/rhel7/azure.go
index 21015f44f..958406ce5 100644
--- a/internal/distro/rhel7/azure.go
+++ b/internal/distro/rhel7/azure.go
@@ -7,7 +7,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/disk"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
 
diff --git a/internal/distro/rhel7/distro.go b/internal/distro/rhel7/distro.go
index d210b5099..73097cb02 100644
--- a/internal/distro/rhel7/distro.go
+++ b/internal/distro/rhel7/distro.go
@@ -11,7 +11,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
 	"github.com/osbuild/osbuild-composer/internal/disk"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
 
diff --git a/internal/distro/rhel7/pipelines.go b/internal/distro/rhel7/pipelines.go
index 7b899c0ff..267680f78 100644
--- a/internal/distro/rhel7/pipelines.go
+++ b/internal/distro/rhel7/pipelines.go
@@ -6,7 +6,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
 	"github.com/osbuild/osbuild-composer/internal/disk"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
 
diff --git a/internal/distro/rhel7/qcow2.go b/internal/distro/rhel7/qcow2.go
index c5745959c..3e2b61a53 100644
--- a/internal/distro/rhel7/qcow2.go
+++ b/internal/distro/rhel7/qcow2.go
@@ -6,7 +6,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
 
diff --git a/internal/distro/rhel7/stage_options.go b/internal/distro/rhel7/stage_options.go
index 785518bf3..d1f533810 100644
--- a/internal/distro/rhel7/stage_options.go
+++ b/internal/distro/rhel7/stage_options.go
@@ -5,7 +5,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/disk"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
 
diff --git a/internal/distro/rhel8/distro.go b/internal/distro/rhel8/distro.go
index 0bd6d7179..346c77252 100644
--- a/internal/distro/rhel8/distro.go
+++ b/internal/distro/rhel8/distro.go
@@ -12,7 +12,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/disk"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/ostree"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
diff --git a/internal/distro/rhel8/pipelines.go b/internal/distro/rhel8/pipelines.go
index 6dd4c870d..c721f795f 100644
--- a/internal/distro/rhel8/pipelines.go
+++ b/internal/distro/rhel8/pipelines.go
@@ -10,7 +10,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/disk"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
 
diff --git a/internal/distro/rhel8/stage_options.go b/internal/distro/rhel8/stage_options.go
index cfa69c845..e9e57c2a6 100644
--- a/internal/distro/rhel8/stage_options.go
+++ b/internal/distro/rhel8/stage_options.go
@@ -8,7 +8,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 const (
diff --git a/internal/distro/rhel90/distro.go b/internal/distro/rhel90/distro.go
index 7ac1172c3..4fea0b44c 100644
--- a/internal/distro/rhel90/distro.go
+++ b/internal/distro/rhel90/distro.go
@@ -12,7 +12,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/disk"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/ostree"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
diff --git a/internal/distro/rhel90/pipelines.go b/internal/distro/rhel90/pipelines.go
index 9e43173b0..70831d9c9 100644
--- a/internal/distro/rhel90/pipelines.go
+++ b/internal/distro/rhel90/pipelines.go
@@ -11,7 +11,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/disk"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
 
diff --git a/internal/distro/rhel90/stage_options.go b/internal/distro/rhel90/stage_options.go
index b9604d105..a964c7d9c 100644
--- a/internal/distro/rhel90/stage_options.go
+++ b/internal/distro/rhel90/stage_options.go
@@ -8,7 +8,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 const (
diff --git a/internal/manifest/anaconda.go b/internal/manifest/anaconda.go
index 4cc8f5664..a89dd7c43 100644
--- a/internal/manifest/anaconda.go
+++ b/internal/manifest/anaconda.go
@@ -3,7 +3,7 @@ package manifest
 import (
 	"fmt"
 
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/platform"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
@@ -140,24 +140,24 @@ func (p *Anaconda) serializeEnd() {
 	p.packageSpecs = nil
 }
 
-func (p *Anaconda) serialize() osbuild2.Pipeline {
+func (p *Anaconda) serialize() osbuild.Pipeline {
 	if len(p.packageSpecs) == 0 {
 		panic("serialization not started")
 	}
 	pipeline := p.Base.serialize()
 
-	pipeline.AddStage(osbuild2.NewRPMStage(osbuild2.NewRPMStageOptions(p.repos), osbuild2.NewRpmStageSourceFilesInputs(p.packageSpecs)))
-	pipeline.AddStage(osbuild2.NewBuildstampStage(&osbuild2.BuildstampStageOptions{
+	pipeline.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(p.repos), osbuild.NewRpmStageSourceFilesInputs(p.packageSpecs)))
+	pipeline.AddStage(osbuild.NewBuildstampStage(&osbuild.BuildstampStageOptions{
 		Arch:    p.platform.GetArch().String(),
 		Product: p.product,
 		Variant: p.Variant,
 		Version: p.version,
 		Final:   true,
 	}))
-	pipeline.AddStage(osbuild2.NewLocaleStage(&osbuild2.LocaleStageOptions{Language: "en_US.UTF-8"}))
+	pipeline.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "en_US.UTF-8"}))
 
 	rootPassword := ""
-	rootUser := osbuild2.UsersStageOptionsUser{
+	rootUser := osbuild.UsersStageOptionsUser{
 		Password: &rootPassword,
 	}
 
@@ -166,27 +166,27 @@ func (p *Anaconda) serialize() osbuild2.Pipeline {
 	installHome := "/root"
 	installShell := "/usr/libexec/anaconda/run-anaconda"
 	installPassword := ""
-	installUser := osbuild2.UsersStageOptionsUser{
+	installUser := osbuild.UsersStageOptionsUser{
 		UID:      &installUID,
 		GID:      &installGID,
 		Home:     &installHome,
 		Shell:    &installShell,
 		Password: &installPassword,
 	}
-	usersStageOptions := &osbuild2.UsersStageOptions{
-		Users: map[string]osbuild2.UsersStageOptionsUser{
+	usersStageOptions := &osbuild.UsersStageOptions{
+		Users: map[string]osbuild.UsersStageOptionsUser{
 			"root":    rootUser,
 			"install": installUser,
 		},
 	}
 
-	pipeline.AddStage(osbuild2.NewUsersStage(usersStageOptions))
-	pipeline.AddStage(osbuild2.NewAnacondaStage(osbuild2.NewAnacondaStageOptions(p.Users)))
-	pipeline.AddStage(osbuild2.NewLoraxScriptStage(&osbuild2.LoraxScriptStageOptions{
+	pipeline.AddStage(osbuild.NewUsersStage(usersStageOptions))
+	pipeline.AddStage(osbuild.NewAnacondaStage(osbuild.NewAnacondaStageOptions(p.Users)))
+	pipeline.AddStage(osbuild.NewLoraxScriptStage(&osbuild.LoraxScriptStageOptions{
 		Path:     "99-generic/runtime-postinstall.tmpl",
 		BaseArch: p.platform.GetArch().String(),
 	}))
-	pipeline.AddStage(osbuild2.NewDracutStage(dracutStageOptions(p.kernelVer, p.Biosdevname, []string{
+	pipeline.AddStage(osbuild.NewDracutStage(dracutStageOptions(p.kernelVer, p.Biosdevname, []string{
 		"anaconda",
 		"rdma",
 		"rngd",
@@ -197,12 +197,12 @@ func (p *Anaconda) serialize() osbuild2.Pipeline {
 		"lunmask",
 		"nfs",
 	})))
-	pipeline.AddStage(osbuild2.NewSELinuxConfigStage(&osbuild2.SELinuxConfigStageOptions{State: osbuild2.SELinuxStatePermissive}))
+	pipeline.AddStage(osbuild.NewSELinuxConfigStage(&osbuild.SELinuxConfigStageOptions{State: osbuild.SELinuxStatePermissive}))
 
 	return pipeline
 }
 
-func dracutStageOptions(kernelVer string, biosdevname bool, additionalModules []string) *osbuild2.DracutStageOptions {
+func dracutStageOptions(kernelVer string, biosdevname bool, additionalModules []string) *osbuild.DracutStageOptions {
 	kernel := []string{kernelVer}
 	modules := []string{
 		"bash",
@@ -249,7 +249,7 @@ func dracutStageOptions(kernelVer string, biosdevname bool, additionalModules []
 	}
 
 	modules = append(modules, additionalModules...)
-	return &osbuild2.DracutStageOptions{
+	return &osbuild.DracutStageOptions{
 		Kernel:  kernel,
 		Modules: modules,
 		Install: []string{"/.buildstamp"},
diff --git a/internal/manifest/build.go b/internal/manifest/build.go
index 0283cca6a..8b8f4fb1c 100644
--- a/internal/manifest/build.go
+++ b/internal/manifest/build.go
@@ -1,7 +1,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/osbuild/osbuild-composer/internal/runner"
 )
@@ -80,15 +80,15 @@ func (p *Build) serializeEnd() {
 	p.packageSpecs = nil
 }
 
-func (p *Build) serialize() osbuild2.Pipeline {
+func (p *Build) serialize() osbuild.Pipeline {
 	if len(p.packageSpecs) == 0 {
 		panic("serialization not started")
 	}
 	pipeline := p.Base.serialize()
 	pipeline.Runner = p.runner.String()
 
-	pipeline.AddStage(osbuild2.NewRPMStage(osbuild2.NewRPMStageOptions(p.repos), osbuild2.NewRpmStageSourceFilesInputs(p.packageSpecs)))
-	pipeline.AddStage(osbuild2.NewSELinuxStage(&osbuild2.SELinuxStageOptions{
+	pipeline.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(p.repos), osbuild.NewRpmStageSourceFilesInputs(p.packageSpecs)))
+	pipeline.AddStage(osbuild.NewSELinuxStage(&osbuild.SELinuxStageOptions{
 		FileContexts: "etc/selinux/targeted/contexts/files/file_contexts",
 		Labels: map[string]string{
 			// TODO: make conditional
diff --git a/internal/manifest/commit.go b/internal/manifest/commit.go
index 9a7f41bcf..ad9b2520b 100644
--- a/internal/manifest/commit.go
+++ b/internal/manifest/commit.go
@@ -1,7 +1,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 // OSTreeCommit represents an ostree with one commit.
@@ -40,31 +40,31 @@ func (p *OSTreeCommit) getBuildPackages() []string {
 	return packages
 }
 
-func (p *OSTreeCommit) serialize() osbuild2.Pipeline {
+func (p *OSTreeCommit) serialize() osbuild.Pipeline {
 	pipeline := p.Base.serialize()
 
 	if p.treePipeline.OSTree == nil {
 		panic("tree is not ostree")
 	}
 
-	pipeline.AddStage(osbuild2.NewOSTreeInitStage(&osbuild2.OSTreeInitStageOptions{Path: "/repo"}))
+	pipeline.AddStage(osbuild.NewOSTreeInitStage(&osbuild.OSTreeInitStageOptions{Path: "/repo"}))
 
-	commitStageInput := new(osbuild2.OSTreeCommitStageInput)
+	commitStageInput := new(osbuild.OSTreeCommitStageInput)
 	commitStageInput.Type = "org.osbuild.tree"
 	commitStageInput.Origin = "org.osbuild.pipeline"
-	commitStageInput.References = osbuild2.OSTreeCommitStageReferences{"name:" + p.treePipeline.Name()}
+	commitStageInput.References = osbuild.OSTreeCommitStageReferences{"name:" + p.treePipeline.Name()}
 
 	var parent string
 	if p.treePipeline.OSTree.Parent != nil {
 		parent = p.treePipeline.OSTree.Parent.Checksum
 	}
-	pipeline.AddStage(osbuild2.NewOSTreeCommitStage(
-		&osbuild2.OSTreeCommitStageOptions{
+	pipeline.AddStage(osbuild.NewOSTreeCommitStage(
+		&osbuild.OSTreeCommitStageOptions{
 			Ref:       p.ref,
 			OSVersion: p.OSVersion,
 			Parent:    parent,
 		},
-		&osbuild2.OSTreeCommitStageInputs{Tree: commitStageInput}),
+		&osbuild.OSTreeCommitStageInputs{Tree: commitStageInput}),
 	)
 
 	return pipeline
diff --git a/internal/manifest/commit_server_tree.go b/internal/manifest/commit_server_tree.go
index fa9045197..f1cc19260 100644
--- a/internal/manifest/commit_server_tree.go
+++ b/internal/manifest/commit_server_tree.go
@@ -4,7 +4,7 @@ import (
 	"path/filepath"
 
 	"github.com/osbuild/osbuild-composer/internal/common"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/platform"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
@@ -94,51 +94,51 @@ func (p *OSTreeCommitServer) serializeEnd() {
 	p.packageSpecs = nil
 }
 
-func (p *OSTreeCommitServer) serialize() osbuild2.Pipeline {
+func (p *OSTreeCommitServer) serialize() osbuild.Pipeline {
 	if len(p.packageSpecs) == 0 {
 		panic("serialization not started")
 	}
 	pipeline := p.Base.serialize()
 
-	pipeline.AddStage(osbuild2.NewRPMStage(osbuild2.NewRPMStageOptions(p.repos), osbuild2.NewRpmStageSourceFilesInputs(p.packageSpecs)))
-	pipeline.AddStage(osbuild2.NewLocaleStage(&osbuild2.LocaleStageOptions{Language: p.Language}))
+	pipeline.AddStage(osbuild.NewRPMStage(osbuild.NewRPMStageOptions(p.repos), osbuild.NewRpmStageSourceFilesInputs(p.packageSpecs)))
+	pipeline.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: p.Language}))
 
 	htmlRoot := "/usr/share/nginx/html"
 	repoPath := filepath.Join(htmlRoot, "repo")
-	pipeline.AddStage(osbuild2.NewOSTreeInitStage(&osbuild2.OSTreeInitStageOptions{Path: repoPath}))
+	pipeline.AddStage(osbuild.NewOSTreeInitStage(&osbuild.OSTreeInitStageOptions{Path: repoPath}))
 
-	pipeline.AddStage(osbuild2.NewOSTreePullStage(
-		&osbuild2.OSTreePullStageOptions{Repo: repoPath},
-		osbuild2.NewOstreePullStageInputs("org.osbuild.pipeline", "name:"+p.commitPipeline.Name(), p.commitPipeline.ref),
+	pipeline.AddStage(osbuild.NewOSTreePullStage(
+		&osbuild.OSTreePullStageOptions{Repo: repoPath},
+		osbuild.NewOstreePullStageInputs("org.osbuild.pipeline", "name:"+p.commitPipeline.Name(), p.commitPipeline.ref),
 	))
 
 	// make nginx log and lib directories world writeable, otherwise nginx can't start in
 	// an unprivileged container
-	pipeline.AddStage(osbuild2.NewChmodStage(chmodStageOptions("/var/log/nginx", "a+rwX", true)))
-	pipeline.AddStage(osbuild2.NewChmodStage(chmodStageOptions("/var/lib/nginx", "a+rwX", true)))
+	pipeline.AddStage(osbuild.NewChmodStage(chmodStageOptions("/var/log/nginx", "a+rwX", true)))
+	pipeline.AddStage(osbuild.NewChmodStage(chmodStageOptions("/var/lib/nginx", "a+rwX", true)))
 
-	pipeline.AddStage(osbuild2.NewNginxConfigStage(nginxConfigStageOptions(p.nginxConfigPath, htmlRoot, p.listenPort)))
+	pipeline.AddStage(osbuild.NewNginxConfigStage(nginxConfigStageOptions(p.nginxConfigPath, htmlRoot, p.listenPort)))
 
 	return pipeline
 }
 
-func nginxConfigStageOptions(path, htmlRoot, listen string) *osbuild2.NginxConfigStageOptions {
+func nginxConfigStageOptions(path, htmlRoot, listen string) *osbuild.NginxConfigStageOptions {
 	// configure nginx to work in an unprivileged container
-	cfg := &osbuild2.NginxConfig{
+	cfg := &osbuild.NginxConfig{
 		Listen: listen,
 		Root:   htmlRoot,
 		Daemon: common.BoolToPtr(false),
 		PID:    "/tmp/nginx.pid",
 	}
-	return &osbuild2.NginxConfigStageOptions{
+	return &osbuild.NginxConfigStageOptions{
 		Path:   path,
 		Config: cfg,
 	}
 }
 
-func chmodStageOptions(path, mode string, recursive bool) *osbuild2.ChmodStageOptions {
-	return &osbuild2.ChmodStageOptions{
-		Items: map[string]osbuild2.ChmodStagePathOptions{
+func chmodStageOptions(path, mode string, recursive bool) *osbuild.ChmodStageOptions {
+	return &osbuild.ChmodStageOptions{
+		Items: map[string]osbuild.ChmodStagePathOptions{
 			path: {Mode: mode, Recursive: recursive},
 		},
 	}
diff --git a/internal/manifest/iso.go b/internal/manifest/iso.go
index a05138a86..1c53eaf2f 100644
--- a/internal/manifest/iso.go
+++ b/internal/manifest/iso.go
@@ -1,7 +1,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 // An ISO represents a bootable ISO file created from an
@@ -37,17 +37,17 @@ func (p *ISO) getBuildPackages() []string {
 	}
 }
 
-func (p *ISO) serialize() osbuild2.Pipeline {
+func (p *ISO) serialize() osbuild.Pipeline {
 	pipeline := p.Base.serialize()
 
-	pipeline.AddStage(osbuild2.NewXorrisofsStage(xorrisofsStageOptions(p.Filename, p.treePipeline.isoLabel, p.ISOLinux), osbuild2.NewXorrisofsStagePipelineTreeInputs(p.treePipeline.Name())))
-	pipeline.AddStage(osbuild2.NewImplantisomd5Stage(&osbuild2.Implantisomd5StageOptions{Filename: p.Filename}))
+	pipeline.AddStage(osbuild.NewXorrisofsStage(xorrisofsStageOptions(p.Filename, p.treePipeline.isoLabel, p.ISOLinux), osbuild.NewXorrisofsStagePipelineTreeInputs(p.treePipeline.Name())))
+	pipeline.AddStage(osbuild.NewImplantisomd5Stage(&osbuild.Implantisomd5StageOptions{Filename: p.Filename}))
 
 	return pipeline
 }
 
-func xorrisofsStageOptions(filename, isolabel string, isolinux bool) *osbuild2.XorrisofsStageOptions {
-	options := &osbuild2.XorrisofsStageOptions{
+func xorrisofsStageOptions(filename, isolabel string, isolinux bool) *osbuild.XorrisofsStageOptions {
+	options := &osbuild.XorrisofsStageOptions{
 		Filename: filename,
 		VolID:    isolabel,
 		SysID:    "LINUX",
@@ -56,7 +56,7 @@ func xorrisofsStageOptions(filename, isolabel string, isolinux bool) *osbuild2.X
 	}
 
 	if isolinux {
-		options.Boot = &osbuild2.XorrisofsBoot{
+		options.Boot = &osbuild.XorrisofsBoot{
 			Image:   "isolinux/isolinux.bin",
 			Catalog: "isolinux/boot.cat",
 		}
diff --git a/internal/manifest/iso_tree.go b/internal/manifest/iso_tree.go
index cdb2d9e23..a0c75ff02 100644
--- a/internal/manifest/iso_tree.go
+++ b/internal/manifest/iso_tree.go
@@ -6,7 +6,7 @@ import (
 
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 // An ISOTree represents a tree containing the anaconda installer,
@@ -71,44 +71,44 @@ func (p *ISOTree) getBuildPackages() []string {
 	return packages
 }
 
-func (p *ISOTree) serialize() osbuild2.Pipeline {
+func (p *ISOTree) serialize() osbuild.Pipeline {
 	pipeline := p.Base.serialize()
 
 	kspath := "/osbuild.ks"
 	ostreeRepoPath := "/ostree/repo"
 
-	pipeline.AddStage(osbuild2.NewBootISOMonoStage(bootISOMonoStageOptions(p.anacondaPipeline.kernelVer,
+	pipeline.AddStage(osbuild.NewBootISOMonoStage(bootISOMonoStageOptions(p.anacondaPipeline.kernelVer,
 		p.anacondaPipeline.platform.GetArch().String(),
 		p.UEFIVendor,
 		p.anacondaPipeline.product,
 		p.anacondaPipeline.version,
 		p.isoLabel,
 		kspath),
-		osbuild2.NewBootISOMonoStagePipelineTreeInputs(p.anacondaPipeline.Name())))
+		osbuild.NewBootISOMonoStagePipelineTreeInputs(p.anacondaPipeline.Name())))
 
-	kickstartOptions, err := osbuild2.NewKickstartStageOptions(kspath, "", p.Users, p.Groups, makeISORootPath(ostreeRepoPath), p.osTreeRef, p.OSName)
+	kickstartOptions, err := osbuild.NewKickstartStageOptions(kspath, "", p.Users, p.Groups, makeISORootPath(ostreeRepoPath), p.osTreeRef, p.OSName)
 	if err != nil {
 		panic("password encryption failed")
 	}
 
-	pipeline.AddStage(osbuild2.NewKickstartStage(kickstartOptions))
-	pipeline.AddStage(osbuild2.NewDiscinfoStage(&osbuild2.DiscinfoStageOptions{
+	pipeline.AddStage(osbuild.NewKickstartStage(kickstartOptions))
+	pipeline.AddStage(osbuild.NewDiscinfoStage(&osbuild.DiscinfoStageOptions{
 		BaseArch: p.anacondaPipeline.platform.GetArch().String(),
 		Release:  p.Release,
 	}))
 
-	pipeline.AddStage(osbuild2.NewOSTreeInitStage(&osbuild2.OSTreeInitStageOptions{Path: ostreeRepoPath}))
-	pipeline.AddStage(osbuild2.NewOSTreePullStage(
-		&osbuild2.OSTreePullStageOptions{Repo: ostreeRepoPath},
-		osbuild2.NewOstreePullStageInputs("org.osbuild.source", p.osTreeCommit, p.osTreeRef),
+	pipeline.AddStage(osbuild.NewOSTreeInitStage(&osbuild.OSTreeInitStageOptions{Path: ostreeRepoPath}))
+	pipeline.AddStage(osbuild.NewOSTreePullStage(
+		&osbuild.OSTreePullStageOptions{Repo: ostreeRepoPath},
+		osbuild.NewOstreePullStageInputs("org.osbuild.source", p.osTreeCommit, p.osTreeRef),
 	))
 
 	return pipeline
 }
 
-func bootISOMonoStageOptions(kernelVer, arch, vendor, product, osVersion, isolabel, kspath string) *osbuild2.BootISOMonoStageOptions {
-	comprOptions := new(osbuild2.FSCompressionOptions)
-	if bcj := osbuild2.BCJOption(arch); bcj != "" {
+func bootISOMonoStageOptions(kernelVer, arch, vendor, product, osVersion, isolabel, kspath string) *osbuild.BootISOMonoStageOptions {
+	comprOptions := new(osbuild.FSCompressionOptions)
+	if bcj := osbuild.BCJOption(arch); bcj != "" {
 		comprOptions.BCJ = bcj
 	}
 	var architectures []string
@@ -121,26 +121,26 @@ func bootISOMonoStageOptions(kernelVer, arch, vendor, product, osVersion, isolab
 		panic("unsupported architecture")
 	}
 
-	return &osbuild2.BootISOMonoStageOptions{
-		Product: osbuild2.Product{
+	return &osbuild.BootISOMonoStageOptions{
+		Product: osbuild.Product{
 			Name:    product,
 			Version: osVersion,
 		},
 		ISOLabel:   isolabel,
 		Kernel:     kernelVer,
 		KernelOpts: fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", isolabel, kspath),
-		EFI: osbuild2.EFI{
+		EFI: osbuild.EFI{
 			Architectures: architectures,
 			Vendor:        vendor,
 		},
-		ISOLinux: osbuild2.ISOLinux{
+		ISOLinux: osbuild.ISOLinux{
 			Enabled: arch == distro.X86_64ArchName,
 			Debug:   false,
 		},
 		Templates: "99-generic",
-		RootFS: osbuild2.RootFS{
+		RootFS: osbuild.RootFS{
 			Size: 9216,
-			Compression: osbuild2.FSCompression{
+			Compression: osbuild.FSCompression{
 				Method:  "xz",
 				Options: comprOptions,
 			},
diff --git a/internal/manifest/manifest.go b/internal/manifest/manifest.go
index d6ad42a9a..678e22610 100644
--- a/internal/manifest/manifest.go
+++ b/internal/manifest/manifest.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/ostree"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
@@ -59,7 +59,7 @@ func (m Manifest) GetPackageSetChains() map[string][]rpmmd.PackageSet {
 }
 
 func (m Manifest) Serialize(packageSets map[string][]rpmmd.PackageSpec) (distro.Manifest, error) {
-	pipelines := make([]osbuild2.Pipeline, 0)
+	pipelines := make([]osbuild.Pipeline, 0)
 	packages := make([]rpmmd.PackageSpec, 0)
 	commits := make([]ostree.CommitSource, 0)
 	inline := make([]string, 0)
@@ -81,10 +81,10 @@ func (m Manifest) Serialize(packageSets map[string][]rpmmd.PackageSpec) (distro.
 	}
 
 	return json.Marshal(
-		osbuild2.Manifest{
+		osbuild.Manifest{
 			Version:   "2",
 			Pipelines: pipelines,
-			Sources:   osbuild2.GenSources(packages, commits, inline),
+			Sources:   osbuild.GenSources(packages, commits, inline),
 		},
 	)
 }
diff --git a/internal/manifest/oci_container.go b/internal/manifest/oci_container.go
index bcd46fe39..ebaadd72b 100644
--- a/internal/manifest/oci_container.go
+++ b/internal/manifest/oci_container.go
@@ -1,7 +1,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 // An OCIContainer represents an OCI container, containing a filesystem
@@ -31,23 +31,23 @@ func NewOCIContainer(m *Manifest,
 	return p
 }
 
-func (p *OCIContainer) serialize() osbuild2.Pipeline {
+func (p *OCIContainer) serialize() osbuild.Pipeline {
 	pipeline := p.Base.serialize()
 
-	options := &osbuild2.OCIArchiveStageOptions{
+	options := &osbuild.OCIArchiveStageOptions{
 		Architecture: p.treePipeline.GetPlatform().GetArch().String(),
 		Filename:     p.Filename,
-		Config: &osbuild2.OCIArchiveConfig{
+		Config: &osbuild.OCIArchiveConfig{
 			Cmd:          p.Cmd,
 			ExposedPorts: p.ExposedPorts,
 		},
 	}
-	baseInput := new(osbuild2.OCIArchiveStageInput)
+	baseInput := new(osbuild.OCIArchiveStageInput)
 	baseInput.Type = "org.osbuild.tree"
 	baseInput.Origin = "org.osbuild.pipeline"
 	baseInput.References = []string{"name:" + p.treePipeline.Name()}
-	inputs := &osbuild2.OCIArchiveStageInputs{Base: baseInput}
-	pipeline.AddStage(osbuild2.NewOCIArchiveStage(options, inputs))
+	inputs := &osbuild.OCIArchiveStageInputs{Base: baseInput}
+	pipeline.AddStage(osbuild.NewOCIArchiveStage(options, inputs))
 
 	return pipeline
 }
diff --git a/internal/manifest/os.go b/internal/manifest/os.go
index b759c5f12..5f9b92af8 100644
--- a/internal/manifest/os.go
+++ b/internal/manifest/os.go
@@ -9,7 +9,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/disk"
 	"github.com/osbuild/osbuild-composer/internal/environment"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/platform"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/osbuild/osbuild-composer/internal/workload"
@@ -74,24 +74,24 @@ type OS struct {
 	Groups   []blueprint.GroupCustomization
 	Users    []blueprint.UserCustomization
 	Firewall *blueprint.FirewallCustomization
-	// TODO: drop osbuild2 types from the API
-	Grub2Config   *osbuild2.GRUB2Config
-	Sysconfig     []*osbuild2.SysconfigStageOptions
-	SystemdLogind []*osbuild2.SystemdLogindStageOptions
-	CloudInit     []*osbuild2.CloudInitStageOptions
-	Modprobe      []*osbuild2.ModprobeStageOptions
-	DracutConf    []*osbuild2.DracutConfStageOptions
-	SystemdUnit   []*osbuild2.SystemdUnitStageOptions
-	Authselect    *osbuild2.AuthselectStageOptions
-	SELinuxConfig *osbuild2.SELinuxConfigStageOptions
-	Tuned         *osbuild2.TunedStageOptions
-	Tmpfilesd     []*osbuild2.TmpfilesdStageOptions
-	PamLimitsConf []*osbuild2.PamLimitsConfStageOptions
-	Sysctld       []*osbuild2.SysctldStageOptions
-	DNFConfig     []*osbuild2.DNFConfigStageOptions
-	SshdConfig    *osbuild2.SshdConfigStageOptions
-	AuthConfig    *osbuild2.AuthconfigStageOptions
-	PwQuality     *osbuild2.PwqualityConfStageOptions
+	// TODO: drop osbuild types from the API
+	Grub2Config   *osbuild.GRUB2Config
+	Sysconfig     []*osbuild.SysconfigStageOptions
+	SystemdLogind []*osbuild.SystemdLogindStageOptions
+	CloudInit     []*osbuild.CloudInitStageOptions
+	Modprobe      []*osbuild.ModprobeStageOptions
+	DracutConf    []*osbuild.DracutConfStageOptions
+	SystemdUnit   []*osbuild.SystemdUnitStageOptions
+	Authselect    *osbuild.AuthselectStageOptions
+	SELinuxConfig *osbuild.SELinuxConfigStageOptions
+	Tuned         *osbuild.TunedStageOptions
+	Tmpfilesd     []*osbuild.TmpfilesdStageOptions
+	PamLimitsConf []*osbuild.PamLimitsConfStageOptions
+	Sysctld       []*osbuild.SysctldStageOptions
+	DNFConfig     []*osbuild.DNFConfigStageOptions
+	SshdConfig    *osbuild.SshdConfigStageOptions
+	AuthConfig    *osbuild.AuthconfigStageOptions
+	PwQuality     *osbuild.PwqualityConfStageOptions
 
 	repos        []rpmmd.RepoConfig
 	packageSpecs []rpmmd.PackageSpec
@@ -211,7 +211,7 @@ func (p *OS) serializeEnd() {
 	p.packageSpecs = nil
 }
 
-func (p *OS) serialize() osbuild2.Pipeline {
+func (p *OS) serialize() osbuild.Pipeline {
 	if len(p.packageSpecs) == 0 {
 		panic("serialization not started")
 	}
@@ -219,45 +219,45 @@ func (p *OS) serialize() osbuild2.Pipeline {
 	pipeline := p.Base.serialize()
 
 	if p.OSTree != nil && p.OSTree.Parent != nil {
-		pipeline.AddStage(osbuild2.NewOSTreePasswdStage("org.osbuild.source", p.OSTree.Parent.Checksum))
+		pipeline.AddStage(osbuild.NewOSTreePasswdStage("org.osbuild.source", p.OSTree.Parent.Checksum))
 	}
 
-	rpmOptions := osbuild2.NewRPMStageOptions(p.repos)
+	rpmOptions := osbuild.NewRPMStageOptions(p.repos)
 	if p.ExcludeDocs {
 		if rpmOptions.Exclude == nil {
-			rpmOptions.Exclude = &osbuild2.Exclude{}
+			rpmOptions.Exclude = &osbuild.Exclude{}
 		}
 		rpmOptions.Exclude.Docs = true
 	}
 	rpmOptions.GPGKeysFromTree = p.GPGKeyFiles
-	pipeline.AddStage(osbuild2.NewRPMStage(rpmOptions, osbuild2.NewRpmStageSourceFilesInputs(p.packageSpecs)))
+	pipeline.AddStage(osbuild.NewRPMStage(rpmOptions, osbuild.NewRpmStageSourceFilesInputs(p.packageSpecs)))
 
 	// If the /boot is on a separate partition, the prefix for the BLS stage must be ""
 	if p.PartitionTable == nil || p.PartitionTable.FindMountable("/boot") == nil {
-		pipeline.AddStage(osbuild2.NewFixBLSStage(&osbuild2.FixBLSStageOptions{}))
+		pipeline.AddStage(osbuild.NewFixBLSStage(&osbuild.FixBLSStageOptions{}))
 	} else {
-		pipeline.AddStage(osbuild2.NewFixBLSStage(&osbuild2.FixBLSStageOptions{Prefix: common.StringToPtr("")}))
+		pipeline.AddStage(osbuild.NewFixBLSStage(&osbuild.FixBLSStageOptions{Prefix: common.StringToPtr("")}))
 	}
 
-	pipeline.AddStage(osbuild2.NewLocaleStage(&osbuild2.LocaleStageOptions{Language: p.Language}))
+	pipeline.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: p.Language}))
 
 	if p.Keyboard != nil {
-		pipeline.AddStage(osbuild2.NewKeymapStage(&osbuild2.KeymapStageOptions{Keymap: *p.Keyboard}))
+		pipeline.AddStage(osbuild.NewKeymapStage(&osbuild.KeymapStageOptions{Keymap: *p.Keyboard}))
 	}
 
-	pipeline.AddStage(osbuild2.NewHostnameStage(&osbuild2.HostnameStageOptions{Hostname: p.Hostname}))
-	pipeline.AddStage(osbuild2.NewTimezoneStage(&osbuild2.TimezoneStageOptions{Zone: p.Timezone}))
+	pipeline.AddStage(osbuild.NewHostnameStage(&osbuild.HostnameStageOptions{Hostname: p.Hostname}))
+	pipeline.AddStage(osbuild.NewTimezoneStage(&osbuild.TimezoneStageOptions{Zone: p.Timezone}))
 
 	if len(p.NTPServers) > 0 {
-		pipeline.AddStage(osbuild2.NewChronyStage(&osbuild2.ChronyStageOptions{Timeservers: p.NTPServers}))
+		pipeline.AddStage(osbuild.NewChronyStage(&osbuild.ChronyStageOptions{Timeservers: p.NTPServers}))
 	}
 
 	if len(p.Groups) > 0 {
-		pipeline.AddStage(osbuild2.NewGroupsStage(osbuild2.NewGroupsStageOptions(p.Groups)))
+		pipeline.AddStage(osbuild.NewGroupsStage(osbuild.NewGroupsStageOptions(p.Groups)))
 	}
 
 	if len(p.Users) > 0 {
-		userOptions, err := osbuild2.NewUsersStageOptions(p.Users, false)
+		userOptions, err := osbuild.NewUsersStageOptions(p.Users, false)
 		if err != nil {
 			// TODO: move encryption into weldr
 			panic("password encryption failed")
@@ -266,15 +266,15 @@ func (p *OS) serialize() osbuild2.Pipeline {
 			// for ostree, writing the key during user creation is
 			// redundant and can cause issues so create users without keys
 			// and write them on first boot
-			userOptionsSansKeys, err := osbuild2.NewUsersStageOptions(p.Users, true)
+			userOptionsSansKeys, err := osbuild.NewUsersStageOptions(p.Users, true)
 			if err != nil {
 				// TODO: move encryption into weldr
 				panic("password encryption failed")
 			}
-			pipeline.AddStage(osbuild2.NewUsersStage(userOptionsSansKeys))
-			pipeline.AddStage(osbuild2.NewFirstBootStage(usersFirstBootOptions(userOptions)))
+			pipeline.AddStage(osbuild.NewUsersStage(userOptionsSansKeys))
+			pipeline.AddStage(osbuild.NewFirstBootStage(usersFirstBootOptions(userOptions)))
 		} else {
-			pipeline.AddStage(osbuild2.NewUsersStage(userOptions))
+			pipeline.AddStage(osbuild.NewUsersStage(userOptions))
 		}
 	}
 
@@ -291,7 +291,7 @@ func (p *OS) serialize() osbuild2.Pipeline {
 	}
 	if len(enabledServices) != 0 ||
 		len(disabledServices) != 0 || p.DefaultTarget != "" {
-		pipeline.AddStage(osbuild2.NewSystemdStage(&osbuild2.SystemdStageOptions{
+		pipeline.AddStage(osbuild.NewSystemdStage(&osbuild.SystemdStageOptions{
 			EnabledServices:  enabledServices,
 			DisabledServices: disabledServices,
 			DefaultTarget:    p.DefaultTarget,
@@ -299,7 +299,7 @@ func (p *OS) serialize() osbuild2.Pipeline {
 	}
 
 	if p.Firewall != nil {
-		options := osbuild2.FirewallStageOptions{
+		options := osbuild.FirewallStageOptions{
 			Ports: p.Firewall.Ports,
 		}
 
@@ -308,86 +308,86 @@ func (p *OS) serialize() osbuild2.Pipeline {
 			options.DisabledServices = p.Firewall.Services.Disabled
 		}
 
-		pipeline.AddStage(osbuild2.NewFirewallStage(&options))
+		pipeline.AddStage(osbuild.NewFirewallStage(&options))
 	}
 
 	for _, sysconfigConfig := range p.Sysconfig {
-		pipeline.AddStage(osbuild2.NewSysconfigStage(sysconfigConfig))
+		pipeline.AddStage(osbuild.NewSysconfigStage(sysconfigConfig))
 	}
 
 	for _, systemdLogindConfig := range p.SystemdLogind {
-		pipeline.AddStage(osbuild2.NewSystemdLogindStage(systemdLogindConfig))
+		pipeline.AddStage(osbuild.NewSystemdLogindStage(systemdLogindConfig))
 	}
 
 	for _, cloudInitConfig := range p.CloudInit {
-		pipeline.AddStage(osbuild2.NewCloudInitStage(cloudInitConfig))
+		pipeline.AddStage(osbuild.NewCloudInitStage(cloudInitConfig))
 	}
 
 	for _, modprobeConfig := range p.Modprobe {
-		pipeline.AddStage(osbuild2.NewModprobeStage(modprobeConfig))
+		pipeline.AddStage(osbuild.NewModprobeStage(modprobeConfig))
 	}
 
 	for _, dracutConfConfig := range p.DracutConf {
-		pipeline.AddStage(osbuild2.NewDracutConfStage(dracutConfConfig))
+		pipeline.AddStage(osbuild.NewDracutConfStage(dracutConfConfig))
 	}
 
 	for _, systemdUnitConfig := range p.SystemdUnit {
-		pipeline.AddStage(osbuild2.NewSystemdUnitStage(systemdUnitConfig))
+		pipeline.AddStage(osbuild.NewSystemdUnitStage(systemdUnitConfig))
 	}
 
 	if p.Authselect != nil {
-		pipeline.AddStage(osbuild2.NewAuthselectStage(p.Authselect))
+		pipeline.AddStage(osbuild.NewAuthselectStage(p.Authselect))
 	}
 
 	if p.SELinuxConfig != nil {
-		pipeline.AddStage(osbuild2.NewSELinuxConfigStage(p.SELinuxConfig))
+		pipeline.AddStage(osbuild.NewSELinuxConfigStage(p.SELinuxConfig))
 	}
 
 	if p.Tuned != nil {
-		pipeline.AddStage(osbuild2.NewTunedStage(p.Tuned))
+		pipeline.AddStage(osbuild.NewTunedStage(p.Tuned))
 	}
 
 	for _, tmpfilesdConfig := range p.Tmpfilesd {
-		pipeline.AddStage(osbuild2.NewTmpfilesdStage(tmpfilesdConfig))
+		pipeline.AddStage(osbuild.NewTmpfilesdStage(tmpfilesdConfig))
 	}
 
 	for _, pamLimitsConfConfig := range p.PamLimitsConf {
-		pipeline.AddStage(osbuild2.NewPamLimitsConfStage(pamLimitsConfConfig))
+		pipeline.AddStage(osbuild.NewPamLimitsConfStage(pamLimitsConfConfig))
 	}
 
 	for _, sysctldConfig := range p.Sysctld {
-		pipeline.AddStage(osbuild2.NewSysctldStage(sysctldConfig))
+		pipeline.AddStage(osbuild.NewSysctldStage(sysctldConfig))
 	}
 
 	for _, dnfConfig := range p.DNFConfig {
-		pipeline.AddStage(osbuild2.NewDNFConfigStage(dnfConfig))
+		pipeline.AddStage(osbuild.NewDNFConfigStage(dnfConfig))
 	}
 
 	if p.SshdConfig != nil {
-		pipeline.AddStage((osbuild2.NewSshdConfigStage(p.SshdConfig)))
+		pipeline.AddStage((osbuild.NewSshdConfigStage(p.SshdConfig)))
 	}
 
 	if p.AuthConfig != nil {
-		pipeline.AddStage(osbuild2.NewAuthconfigStage(p.AuthConfig))
+		pipeline.AddStage(osbuild.NewAuthconfigStage(p.AuthConfig))
 	}
 
 	if p.PwQuality != nil {
-		pipeline.AddStage(osbuild2.NewPwqualityConfStage(p.PwQuality))
+		pipeline.AddStage(osbuild.NewPwqualityConfStage(p.PwQuality))
 	}
 
 	if pt := p.PartitionTable; pt != nil {
-		kernelOptions := osbuild2.GenImageKernelOptions(p.PartitionTable)
+		kernelOptions := osbuild.GenImageKernelOptions(p.PartitionTable)
 		kernelOptions = append(kernelOptions, p.KernelOptionsAppend...)
 		pipeline = prependKernelCmdlineStage(pipeline, strings.Join(kernelOptions, " "), pt)
 
-		pipeline.AddStage(osbuild2.NewFSTabStage(osbuild2.NewFSTabStageOptions(pt)))
+		pipeline.AddStage(osbuild.NewFSTabStage(osbuild.NewFSTabStageOptions(pt)))
 
-		var bootloader *osbuild2.Stage
+		var bootloader *osbuild.Stage
 		switch p.platform.GetArch() {
 		case platform.ARCH_S390X:
-			bootloader = osbuild2.NewZiplStage(new(osbuild2.ZiplStageOptions))
+			bootloader = osbuild.NewZiplStage(new(osbuild.ZiplStageOptions))
 		default:
-			options := osbuild2.NewGrub2StageOptionsUnified(pt,
+			options := osbuild.NewGrub2StageOptionsUnified(pt,
 				p.kernelVer,
 				p.platform.GetUEFIVendor() != "",
 				p.platform.GetBIOSPlatform(),
@@ -402,20 +402,20 @@ func (p *OS) serialize() osbuild2.Pipeline {
 
 				options.Config = cfg
 			}
-			bootloader = osbuild2.NewGRUB2Stage(options)
+			bootloader = osbuild.NewGRUB2Stage(options)
 		}
 
 		pipeline.AddStage(bootloader)
 	}
 
 	if p.SElinux != "" {
-		pipeline.AddStage(osbuild2.NewSELinuxStage(&osbuild2.SELinuxStageOptions{
+		pipeline.AddStage(osbuild.NewSELinuxStage(&osbuild.SELinuxStageOptions{
 			FileContexts: fmt.Sprintf("etc/selinux/%s/contexts/files/file_contexts", p.SElinux),
 		}))
 	}
 
 	if p.OSTree != nil {
-		pipeline.AddStage(osbuild2.NewOSTreePrepTreeStage(&osbuild2.OSTreePrepTreeStageOptions{
+		pipeline.AddStage(osbuild.NewOSTreePrepTreeStage(&osbuild.OSTreePrepTreeStageOptions{
 			EtcGroupMembers: []string{
 				// NOTE: We may want to make this configurable.
 				"wheel", "docker",
@@ -426,18 +426,18 @@ func (p *OS) serialize() osbuild2.Pipeline {
 	return pipeline
 }
 
-func prependKernelCmdlineStage(pipeline osbuild2.Pipeline, kernelOptions string, pt *disk.PartitionTable) osbuild2.Pipeline {
+func prependKernelCmdlineStage(pipeline osbuild.Pipeline, kernelOptions string, pt *disk.PartitionTable) osbuild.Pipeline {
 	rootFs := pt.FindMountable("/")
 	if rootFs == nil {
 		panic("root filesystem must be defined for kernel-cmdline stage, this is a programming error")
 	}
 	rootFsUUID := rootFs.GetFSSpec().UUID
-	kernelStage := osbuild2.NewKernelCmdlineStage(osbuild2.NewKernelCmdlineStageOptions(rootFsUUID, kernelOptions))
-	pipeline.Stages = append([]*osbuild2.Stage{kernelStage}, pipeline.Stages...)
+	kernelStage := osbuild.NewKernelCmdlineStage(osbuild.NewKernelCmdlineStageOptions(rootFsUUID, kernelOptions))
+	pipeline.Stages = append([]*osbuild.Stage{kernelStage}, pipeline.Stages...)
 	return pipeline
 }
 
-func usersFirstBootOptions(usersStageOptions *osbuild2.UsersStageOptions) *osbuild2.FirstBootStageOptions {
+func usersFirstBootOptions(usersStageOptions *osbuild.UsersStageOptions) *osbuild.FirstBootStageOptions {
 	cmds := make([]string, 0, 3*len(usersStageOptions.Users)+2)
 	// workaround for creating authorized_keys file for user
 	// need to special case the root user, which has its home in a different place
@@ -464,7 +464,7 @@ func usersFirstBootOptions(usersStageOptions *osbuild2.UsersStageOptions) *osbui
 	cmds = append(cmds, fmt.Sprintf("restorecon -rvF %s", varhome))
 	cmds = append(cmds, fmt.Sprintf("restorecon -rvF %s", roothome))
 
-	options := &osbuild2.FirstBootStageOptions{
+	options := &osbuild.FirstBootStageOptions{
 		Commands:       cmds,
 		WaitForNetwork: false,
 	}
diff --git a/internal/manifest/pipeline.go b/internal/manifest/pipeline.go
index 09a1e9256..0b330e4a9 100644
--- a/internal/manifest/pipeline.go
+++ b/internal/manifest/pipeline.go
@@ -7,7 +7,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/platform"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
@@ -18,7 +18,7 @@ type Pipeline interface {
 	getPackageSetChain() []rpmmd.PackageSet
 	serializeStart([]rpmmd.PackageSpec)
 	serializeEnd()
-	serialize() osbuild2.Pipeline
+	serialize() osbuild.Pipeline
 	getPackageSpecs() []rpmmd.PackageSpec
 	getOSTreeCommits() []osTreeCommit
 	getInline() []string
@@ -95,11 +95,11 @@ func (p Base) serializeStart([]rpmmd.PackageSpec) {
 func (p Base) serializeEnd() {
 }
 
-// Serialize turns a given pipeline into an osbuild2.Pipeline object. This object is
+// Serialize turns a given pipeline into an osbuild.Pipeline object. This object is
 // meant to be treated as opaque and not to be modified further outside of the pipeline
 // package.
-func (p Base) serialize() osbuild2.Pipeline {
-	pipeline := osbuild2.Pipeline{
+func (p Base) serialize() osbuild.Pipeline {
+	pipeline := osbuild.Pipeline{
 		Name: p.name,
 	}
 	if p.build != nil {
diff --git a/internal/manifest/qcow2.go b/internal/manifest/qcow2.go
index 8ac0f2eb2..404be2450 100644
--- a/internal/manifest/qcow2.go
+++ b/internal/manifest/qcow2.go
@@ -1,7 +1,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 // A QCOW2 turns a raw image file into qcow2 image.
@@ -32,16 +32,16 @@ func NewQCOW2(m *Manifest,
 	return p
 }
 
-func (p *QCOW2) serialize() osbuild2.Pipeline {
+func (p *QCOW2) serialize() osbuild.Pipeline {
 	pipeline := p.Base.serialize()
 
-	pipeline.AddStage(osbuild2.NewQEMUStage(
-		osbuild2.NewQEMUStageOptions(p.Filename,
-			osbuild2.QEMUFormatQCOW2,
-			osbuild2.QCOW2Options{
+	pipeline.AddStage(osbuild.NewQEMUStage(
+		osbuild.NewQEMUStageOptions(p.Filename,
+			osbuild.QEMUFormatQCOW2,
+			osbuild.QCOW2Options{
 				Compat: p.Compat,
 			}),
-		osbuild2.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename),
+		osbuild.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename),
 	))
 
 	return pipeline
diff --git a/internal/manifest/raw.go b/internal/manifest/raw.go
index f8a99177d..a2a3dce7a 100644
--- a/internal/manifest/raw.go
+++ b/internal/manifest/raw.go
@@ -1,7 +1,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/platform"
 )
 
@@ -33,7 +33,7 @@ func (p *RawImage) getBuildPackages() []string {
 	return p.treePipeline.PartitionTable.GetBuildPackages()
 }
 
-func (p *RawImage) serialize() osbuild2.Pipeline {
+func (p *RawImage) serialize() osbuild.Pipeline {
 	pipeline := p.Base.serialize()
 
 	pt := p.treePipeline.PartitionTable
@@ -41,26 +41,26 @@ func (p *RawImage) serialize() osbuild2.Pipeline {
 		panic("no partition table in live image")
 	}
 
-	for _, stage := range osbuild2.GenImagePrepareStages(pt, p.Filename, osbuild2.PTSfdisk) {
+	for _, stage := range osbuild.GenImagePrepareStages(pt, p.Filename, osbuild.PTSfdisk) {
 		pipeline.AddStage(stage)
 	}
 
 	inputName := "root-tree"
-	copyOptions, copyDevices, copyMounts := osbuild2.GenCopyFSTreeOptions(inputName, p.treePipeline.Name(), p.Filename, pt)
-	copyInputs := osbuild2.NewCopyStagePipelineTreeInputs(inputName, p.treePipeline.Name())
-	pipeline.AddStage(osbuild2.NewCopyStage(copyOptions, copyInputs, copyDevices, copyMounts))
+	copyOptions, copyDevices, copyMounts := osbuild.GenCopyFSTreeOptions(inputName, p.treePipeline.Name(), p.Filename, pt)
+	copyInputs := osbuild.NewCopyStagePipelineTreeInputs(inputName, p.treePipeline.Name())
+	pipeline.AddStage(osbuild.NewCopyStage(copyOptions, copyInputs, copyDevices, copyMounts))
 
-	for _, stage := range osbuild2.GenImageFinishStages(pt, p.Filename) {
+	for _, stage := range osbuild.GenImageFinishStages(pt, p.Filename) {
 		pipeline.AddStage(stage)
 	}
 
 	switch p.treePipeline.platform.GetArch() {
 	case platform.ARCH_S390X:
-		loopback := osbuild2.NewLoopbackDevice(&osbuild2.LoopbackDeviceOptions{Filename: p.Filename})
-		pipeline.AddStage(osbuild2.NewZiplInstStage(osbuild2.NewZiplInstStageOptions(p.treePipeline.kernelVer, pt), loopback, copyDevices, copyMounts))
+		loopback := osbuild.NewLoopbackDevice(&osbuild.LoopbackDeviceOptions{Filename: p.Filename})
+		pipeline.AddStage(osbuild.NewZiplInstStage(osbuild.NewZiplInstStageOptions(p.treePipeline.kernelVer, pt), loopback, copyDevices, copyMounts))
 	default:
 		if grubLegacy := p.treePipeline.platform.GetBIOSPlatform(); grubLegacy != "" {
-			pipeline.AddStage(osbuild2.NewGrub2InstStage(osbuild2.NewGrub2InstStageOption(p.Filename, pt, grubLegacy)))
+			pipeline.AddStage(osbuild.NewGrub2InstStage(osbuild.NewGrub2InstStageOption(p.Filename, pt, grubLegacy)))
 		}
 	}
 
diff --git a/internal/manifest/tar.go b/internal/manifest/tar.go
index eae9edae5..695086fd9 100644
--- a/internal/manifest/tar.go
+++ b/internal/manifest/tar.go
@@ -1,7 +1,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 // A Tar represents the contents of another pipeline in a tar file
@@ -32,14 +32,14 @@ func NewTar(m *Manifest,
 	return p
 }
 
-func (p *Tar) serialize() osbuild2.Pipeline {
+func (p *Tar) serialize() osbuild.Pipeline {
 	pipeline := p.Base.serialize()
 
-	tree := new(osbuild2.TarStageInput)
+	tree := new(osbuild.TarStageInput)
 	tree.Type = "org.osbuild.tree"
 	tree.Origin = "org.osbuild.pipeline"
 	tree.References = []string{"name:" + p.inputPipeline.Name()}
-	tarStage := osbuild2.NewTarStage(&osbuild2.TarStageOptions{Filename: p.Filename}, &osbuild2.TarStageInputs{Tree: tree})
+	tarStage := osbuild.NewTarStage(&osbuild.TarStageOptions{Filename: p.Filename}, &osbuild.TarStageInputs{Tree: tree})
 
 	pipeline.AddStage(tarStage)
 
diff --git a/internal/manifest/vmdk.go b/internal/manifest/vmdk.go
index 94981fa68..2a7d06dc8 100644
--- a/internal/manifest/vmdk.go
+++ b/internal/manifest/vmdk.go
@@ -1,7 +1,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 // A VMDK turns a raw image file into vmdk image.
@@ -30,14 +30,14 @@ func NewVMDK(m *Manifest,
 	return p
 }
 
-func (p *VMDK) serialize() osbuild2.Pipeline {
+func (p *VMDK) serialize() osbuild.Pipeline {
 	pipeline := p.Base.serialize()
 
-	pipeline.AddStage(osbuild2.NewQEMUStage(
-		osbuild2.NewQEMUStageOptions(p.Filename, osbuild2.QEMUFormatVMDK, osbuild2.VMDKOptions{
-			Subformat: osbuild2.VMDKSubformatStreamOptimized,
+	pipeline.AddStage(osbuild.NewQEMUStage(
+		osbuild.NewQEMUStageOptions(p.Filename, osbuild.QEMUFormatVMDK, osbuild.VMDKOptions{
+			Subformat: osbuild.VMDKSubformatStreamOptimized,
 		}),
-		osbuild2.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename),
+		osbuild.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename),
 	))
 
 	return pipeline
diff --git a/internal/manifest/vpc.go b/internal/manifest/vpc.go
index 7ecc4027e..20404b8f0 100644
--- a/internal/manifest/vpc.go
+++ b/internal/manifest/vpc.go
@@ -1,7 +1,7 @@
 package manifest
 
 import (
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 )
 
 // A VPC turns a raw image file into qemu-based image format, such as qcow2.
@@ -31,12 +31,12 @@ func NewVPC(m *Manifest,
 	return p
 }
 
-func (p *VPC) serialize() osbuild2.Pipeline {
+func (p *VPC) serialize() osbuild.Pipeline {
 	pipeline := p.Base.serialize()
 
-	pipeline.AddStage(osbuild2.NewQEMUStage(
-		osbuild2.NewQEMUStageOptions(p.Filename, osbuild2.QEMUFormatVPC, nil),
-		osbuild2.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename),
+	pipeline.AddStage(osbuild.NewQEMUStage(
+		osbuild.NewQEMUStageOptions(p.Filename, osbuild.QEMUFormatVPC, nil),
+		osbuild.NewQemuStagePipelineFilesInputs(p.imgPipeline.Name(), p.imgPipeline.Filename),
 	))
 
 	return pipeline
diff --git a/internal/osbuild2/anaconda_stage.go b/internal/osbuild/anaconda_stage.go
similarity index 97%
rename from internal/osbuild2/anaconda_stage.go
rename to internal/osbuild/anaconda_stage.go
index a89702b07..bc9981375 100644
--- a/internal/osbuild2/anaconda_stage.go
+++ b/internal/osbuild/anaconda_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type AnacondaStageOptions struct {
 	// Kickstart modules to enable
diff --git a/internal/osbuild2/authconfig_stage.go b/internal/osbuild/authconfig_stage.go
similarity index 93%
rename from internal/osbuild2/authconfig_stage.go
rename to internal/osbuild/authconfig_stage.go
index 0be838610..f3e81f5af 100644
--- a/internal/osbuild2/authconfig_stage.go
+++ b/internal/osbuild/authconfig_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type AuthconfigStageOptions struct {
 }
diff --git a/internal/osbuild2/authselect_stage.go b/internal/osbuild/authselect_stage.go
similarity index 94%
rename from internal/osbuild2/authselect_stage.go
rename to internal/osbuild/authselect_stage.go
index 1c6c3a955..a6fca3417 100644
--- a/internal/osbuild2/authselect_stage.go
+++ b/internal/osbuild/authselect_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type AuthselectStageOptions struct {
 	Profile  string   `json:"profile"`
diff --git a/internal/osbuild2/bootiso_stage.go b/internal/osbuild/bootiso_stage.go
similarity index 99%
rename from internal/osbuild2/bootiso_stage.go
rename to internal/osbuild/bootiso_stage.go
index 7c4f5f6d6..e156a9692 100644
--- a/internal/osbuild2/bootiso_stage.go
+++ b/internal/osbuild/bootiso_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type BootISOMonoStageOptions struct {
 	Product Product `json:"product"`
diff --git a/internal/osbuild2/btrfs_mount.go b/internal/osbuild/btrfs_mount.go
similarity index 90%
rename from internal/osbuild2/btrfs_mount.go
rename to internal/osbuild/btrfs_mount.go
index 600afe19c..ebf579968 100644
--- a/internal/osbuild2/btrfs_mount.go
+++ b/internal/osbuild/btrfs_mount.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 func NewBtrfsMount(name, source, target string) *Mount {
 	return &Mount{
diff --git a/internal/osbuild2/buildstamp_stage.go b/internal/osbuild/buildstamp_stage.go
similarity index 97%
rename from internal/osbuild2/buildstamp_stage.go
rename to internal/osbuild/buildstamp_stage.go
index e31e7ab52..53deea44f 100644
--- a/internal/osbuild2/buildstamp_stage.go
+++ b/internal/osbuild/buildstamp_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type BuildstampStageOptions struct {
 	// Build architecture
diff --git a/internal/osbuild2/chmod_stage.go b/internal/osbuild/chmod_stage.go
similarity index 96%
rename from internal/osbuild2/chmod_stage.go
rename to internal/osbuild/chmod_stage.go
index 089a07700..fa164011a 100644
--- a/internal/osbuild2/chmod_stage.go
+++ b/internal/osbuild/chmod_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type ChmodStageOptions struct {
 	Items map[string]ChmodStagePathOptions `json:"items"`
diff --git a/internal/osbuild2/chrony_stage.go b/internal/osbuild/chrony_stage.go
similarity index 98%
rename from internal/osbuild2/chrony_stage.go
rename to internal/osbuild/chrony_stage.go
index 46873e698..507bfb7a0 100644
--- a/internal/osbuild2/chrony_stage.go
+++ b/internal/osbuild/chrony_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/clevis_luks_bind_stage.go b/internal/osbuild/clevis_luks_bind_stage.go
similarity index 95%
rename from internal/osbuild2/clevis_luks_bind_stage.go
rename to internal/osbuild/clevis_luks_bind_stage.go
index 855a5aefb..fd83fce53 100644
--- a/internal/osbuild2/clevis_luks_bind_stage.go
+++ b/internal/osbuild/clevis_luks_bind_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type ClevisLuksBindStageOptions struct {
 	Passphrase string `json:"passphrase"`
diff --git a/internal/osbuild2/cloud_init_stage.go b/internal/osbuild/cloud_init_stage.go
similarity index 99%
rename from internal/osbuild2/cloud_init_stage.go
rename to internal/osbuild/cloud_init_stage.go
index 5ac3be086..f1856d433 100644
--- a/internal/osbuild2/cloud_init_stage.go
+++ b/internal/osbuild/cloud_init_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/copy_stage.go b/internal/osbuild/copy_stage.go
similarity index 99%
rename from internal/osbuild2/copy_stage.go
rename to internal/osbuild/copy_stage.go
index e0ecbfe42..3e25c0b4d 100644
--- a/internal/osbuild2/copy_stage.go
+++ b/internal/osbuild/copy_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/curl_source.go b/internal/osbuild/curl_source.go
similarity index 98%
rename from internal/osbuild2/curl_source.go
rename to internal/osbuild/curl_source.go
index 337c6d137..c26a77ced 100644
--- a/internal/osbuild2/curl_source.go
+++ b/internal/osbuild/curl_source.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"bytes"
diff --git a/internal/osbuild2/device.go b/internal/osbuild/device.go
similarity index 99%
rename from internal/osbuild2/device.go
rename to internal/osbuild/device.go
index 08fc9e423..12d58ed93 100644
--- a/internal/osbuild2/device.go
+++ b/internal/osbuild/device.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/discinfo_stage.go b/internal/osbuild/discinfo_stage.go
similarity index 95%
rename from internal/osbuild2/discinfo_stage.go
rename to internal/osbuild/discinfo_stage.go
index d62df2884..68fda6fd1 100644
--- a/internal/osbuild2/discinfo_stage.go
+++ b/internal/osbuild/discinfo_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type DiscinfoStageOptions struct {
 	// Build architecture
diff --git a/internal/osbuild2/disk.go b/internal/osbuild/disk.go
similarity index 99%
rename from internal/osbuild2/disk.go
rename to internal/osbuild/disk.go
index 3e31151dd..ad165eb3c 100644
--- a/internal/osbuild2/disk.go
+++ b/internal/osbuild/disk.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/dnf_automatic_config_stage.go b/internal/osbuild/dnf_automatic_config_stage.go
similarity index 99%
rename from internal/osbuild2/dnf_automatic_config_stage.go
rename to internal/osbuild/dnf_automatic_config_stage.go
index 54eed7cbb..53ad0a06a 100644
--- a/internal/osbuild2/dnf_automatic_config_stage.go
+++ b/internal/osbuild/dnf_automatic_config_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import "fmt"
 
diff --git a/internal/osbuild2/dnf_config_stage.go b/internal/osbuild/dnf_config_stage.go
similarity index 98%
rename from internal/osbuild2/dnf_config_stage.go
rename to internal/osbuild/dnf_config_stage.go
index 88863cf01..23d511fdd 100644
--- a/internal/osbuild2/dnf_config_stage.go
+++ b/internal/osbuild/dnf_config_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/dracut_conf_stage.go b/internal/osbuild/dracut_conf_stage.go
similarity index 99%
rename from internal/osbuild2/dracut_conf_stage.go
rename to internal/osbuild/dracut_conf_stage.go
index 9131d9390..216c8aa46 100644
--- a/internal/osbuild2/dracut_conf_stage.go
+++ b/internal/osbuild/dracut_conf_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/dracut_stage.go b/internal/osbuild/dracut_stage.go
similarity index 98%
rename from internal/osbuild2/dracut_stage.go
rename to internal/osbuild/dracut_stage.go
index d2f18ec1f..b7b141bc5 100644
--- a/internal/osbuild2/dracut_stage.go
+++ b/internal/osbuild/dracut_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type DracutStageOptions struct {
 	// List of target kernel versions
diff --git a/internal/osbuild2/ext4_mount.go b/internal/osbuild/ext4_mount.go
similarity index 90%
rename from internal/osbuild2/ext4_mount.go
rename to internal/osbuild/ext4_mount.go
index b835b639e..4d0b2d97f 100644
--- a/internal/osbuild2/ext4_mount.go
+++ b/internal/osbuild/ext4_mount.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 func NewExt4Mount(name, source, target string) *Mount {
 	return &Mount{
diff --git a/internal/osbuild2/fat_mount.go b/internal/osbuild/fat_mount.go
similarity index 90%
rename from internal/osbuild2/fat_mount.go
rename to internal/osbuild/fat_mount.go
index 2575a7037..db67a9a2a 100644
--- a/internal/osbuild2/fat_mount.go
+++ b/internal/osbuild/fat_mount.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 func NewFATMount(name, source, target string) *Mount {
 	return &Mount{
diff --git a/internal/osbuild2/fdo_stage.go b/internal/osbuild/fdo_stage.go
similarity index 98%
rename from internal/osbuild2/fdo_stage.go
rename to internal/osbuild/fdo_stage.go
index 0b77e05ec..42cd77183 100644
--- a/internal/osbuild2/fdo_stage.go
+++ b/internal/osbuild/fdo_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"crypto/sha256"
diff --git a/internal/osbuild2/files_input.go b/internal/osbuild/files_input.go
similarity index 99%
rename from internal/osbuild2/files_input.go
rename to internal/osbuild/files_input.go
index 93e545972..eb497af6b 100644
--- a/internal/osbuild2/files_input.go
+++ b/internal/osbuild/files_input.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/firewall_stage.go b/internal/osbuild/firewall_stage.go
similarity index 96%
rename from internal/osbuild2/firewall_stage.go
rename to internal/osbuild/firewall_stage.go
index f63373bf3..8ffe8349b 100644
--- a/internal/osbuild2/firewall_stage.go
+++ b/internal/osbuild/firewall_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type FirewallStageOptions struct {
 	Ports            []string `json:"ports,omitempty"`
diff --git a/internal/osbuild2/first_boot_stage.go b/internal/osbuild/first_boot_stage.go
similarity index 95%
rename from internal/osbuild2/first_boot_stage.go
rename to internal/osbuild/first_boot_stage.go
index 000427c05..02ef6c83b 100644
--- a/internal/osbuild2/first_boot_stage.go
+++ b/internal/osbuild/first_boot_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type FirstBootStageOptions struct {
 	Commands       []string `json:"commands"`
diff --git a/internal/osbuild2/fix_bls_stage.go b/internal/osbuild/fix_bls_stage.go
similarity index 97%
rename from internal/osbuild2/fix_bls_stage.go
rename to internal/osbuild/fix_bls_stage.go
index bb8132b08..8f8e536f3 100644
--- a/internal/osbuild2/fix_bls_stage.go
+++ b/internal/osbuild/fix_bls_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // A FixBLSStageOptions struct
 //
diff --git a/internal/osbuild2/fstab_stage.go b/internal/osbuild/fstab_stage.go
similarity index 99%
rename from internal/osbuild2/fstab_stage.go
rename to internal/osbuild/fstab_stage.go
index 8d0154179..72ecb59bb 100644
--- a/internal/osbuild2/fstab_stage.go
+++ b/internal/osbuild/fstab_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"sort"
diff --git a/internal/osbuild2/groups_stage.go b/internal/osbuild/groups_stage.go
similarity index 97%
rename from internal/osbuild2/groups_stage.go
rename to internal/osbuild/groups_stage.go
index d918861ef..12f8b7d61 100644
--- a/internal/osbuild2/groups_stage.go
+++ b/internal/osbuild/groups_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import "github.com/osbuild/osbuild-composer/internal/blueprint"
 
diff --git a/internal/osbuild2/grub2_inst_stage.go b/internal/osbuild/grub2_inst_stage.go
similarity index 99%
rename from internal/osbuild2/grub2_inst_stage.go
rename to internal/osbuild/grub2_inst_stage.go
index dd053dd17..b1a408ac6 100644
--- a/internal/osbuild2/grub2_inst_stage.go
+++ b/internal/osbuild/grub2_inst_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/grub2_legacy_stage.go b/internal/osbuild/grub2_legacy_stage.go
similarity index 99%
rename from internal/osbuild2/grub2_legacy_stage.go
rename to internal/osbuild/grub2_legacy_stage.go
index 4e33fa199..75332ac15 100644
--- a/internal/osbuild2/grub2_legacy_stage.go
+++ b/internal/osbuild/grub2_legacy_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/grub2_stage.go b/internal/osbuild/grub2_stage.go
similarity index 99%
rename from internal/osbuild2/grub2_stage.go
rename to internal/osbuild/grub2_stage.go
index 50968e6d5..bfe29b4d4 100644
--- a/internal/osbuild2/grub2_stage.go
+++ b/internal/osbuild/grub2_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"github.com/google/uuid"
diff --git a/internal/osbuild2/grub_iso_stage.go b/internal/osbuild/grub_iso_stage.go
similarity index 97%
rename from internal/osbuild2/grub_iso_stage.go
rename to internal/osbuild/grub_iso_stage.go
index 0215a31b7..7a66c1786 100644
--- a/internal/osbuild2/grub_iso_stage.go
+++ b/internal/osbuild/grub_iso_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type GrubISOStageOptions struct {
 	Product Product `json:"product"`
diff --git a/internal/osbuild2/hostname_stage.go b/internal/osbuild/hostname_stage.go
similarity index 93%
rename from internal/osbuild2/hostname_stage.go
rename to internal/osbuild/hostname_stage.go
index 8ffcb579d..603b553dc 100644
--- a/internal/osbuild2/hostname_stage.go
+++ b/internal/osbuild/hostname_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type HostnameStageOptions struct {
 	Hostname string `json:"hostname"`
diff --git a/internal/osbuild2/implantisomd5_stage.go b/internal/osbuild/implantisomd5_stage.go
similarity index 95%
rename from internal/osbuild2/implantisomd5_stage.go
rename to internal/osbuild/implantisomd5_stage.go
index a64f305bd..00ab49288 100644
--- a/internal/osbuild2/implantisomd5_stage.go
+++ b/internal/osbuild/implantisomd5_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type Implantisomd5StageOptions struct {
 	// Path in the ISO where the md5 checksum will be implanted
diff --git a/internal/osbuild2/inline_source.go b/internal/osbuild/inline_source.go
similarity index 97%
rename from internal/osbuild2/inline_source.go
rename to internal/osbuild/inline_source.go
index dc47a9d35..fef4c859b 100644
--- a/internal/osbuild2/inline_source.go
+++ b/internal/osbuild/inline_source.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"crypto/sha256"
diff --git a/internal/osbuild2/input.go b/internal/osbuild/input.go
similarity index 97%
rename from internal/osbuild2/input.go
rename to internal/osbuild/input.go
index b29146568..14d534eec 100644
--- a/internal/osbuild2/input.go
+++ b/internal/osbuild/input.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Collection of Inputs for a Stage
 type Inputs interface {
diff --git a/internal/osbuild2/kernel_cmdline_stage.go b/internal/osbuild/kernel_cmdline_stage.go
similarity index 97%
rename from internal/osbuild2/kernel_cmdline_stage.go
rename to internal/osbuild/kernel_cmdline_stage.go
index 45e5d791d..5d16a81df 100644
--- a/internal/osbuild2/kernel_cmdline_stage.go
+++ b/internal/osbuild/kernel_cmdline_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // KernelCmdlineStageOptions describe how to create kernel-cmdline stage
 //
diff --git a/internal/osbuild2/keymap_stage.go b/internal/osbuild/keymap_stage.go
similarity index 97%
rename from internal/osbuild2/keymap_stage.go
rename to internal/osbuild/keymap_stage.go
index 3cbf6d5dd..09b24fb84 100644
--- a/internal/osbuild2/keymap_stage.go
+++ b/internal/osbuild/keymap_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/kickstart_stage.go b/internal/osbuild/kickstart_stage.go
similarity index 99%
rename from internal/osbuild2/kickstart_stage.go
rename to internal/osbuild/kickstart_stage.go
index a858fac9b..ab197ed92 100644
--- a/internal/osbuild2/kickstart_stage.go
+++ b/internal/osbuild/kickstart_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
diff --git a/internal/osbuild2/locale_stage.go b/internal/osbuild/locale_stage.go
similarity index 96%
rename from internal/osbuild2/locale_stage.go
rename to internal/osbuild/locale_stage.go
index 68d8bd086..264a3be05 100644
--- a/internal/osbuild2/locale_stage.go
+++ b/internal/osbuild/locale_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // The LocaleStageOptions describes the image's locale.
 //
diff --git a/internal/osbuild2/loopback_device.go b/internal/osbuild/loopback_device.go
similarity index 97%
rename from internal/osbuild2/loopback_device.go
rename to internal/osbuild/loopback_device.go
index b0d913394..90696b65b 100644
--- a/internal/osbuild2/loopback_device.go
+++ b/internal/osbuild/loopback_device.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Expose a file (or part of it) as a device node
 
diff --git a/internal/osbuild2/lorax_script_stage.go b/internal/osbuild/lorax_script_stage.go
similarity index 97%
rename from internal/osbuild2/lorax_script_stage.go
rename to internal/osbuild/lorax_script_stage.go
index ff6cbb5a5..a62b70968 100644
--- a/internal/osbuild2/lorax_script_stage.go
+++ b/internal/osbuild/lorax_script_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type LoraxScriptStageOptions struct {
 	// Where to put the script
diff --git a/internal/osbuild2/luks2_device.go b/internal/osbuild/luks2_device.go
similarity index 95%
rename from internal/osbuild2/luks2_device.go
rename to internal/osbuild/luks2_device.go
index 8ade58797..5fbc4568d 100644
--- a/internal/osbuild2/luks2_device.go
+++ b/internal/osbuild/luks2_device.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Provide access to LUKS2 container
 
diff --git a/internal/osbuild2/luks2_format_stage.go b/internal/osbuild/luks2_format_stage.go
similarity index 98%
rename from internal/osbuild2/luks2_format_stage.go
rename to internal/osbuild/luks2_format_stage.go
index 5c7e11aaa..5880f7490 100644
--- a/internal/osbuild2/luks2_format_stage.go
+++ b/internal/osbuild/luks2_format_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import "fmt"
 
diff --git a/internal/osbuild2/luks2_remove_key_stage.go b/internal/osbuild/luks2_remove_key_stage.go
similarity index 95%
rename from internal/osbuild2/luks2_remove_key_stage.go
rename to internal/osbuild/luks2_remove_key_stage.go
index 45166fde5..03d4b862b 100644
--- a/internal/osbuild2/luks2_remove_key_stage.go
+++ b/internal/osbuild/luks2_remove_key_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type LUKS2RemoveKeyStageOptions struct {
 	Passphrase string `json:"passphrase"`
diff --git a/internal/osbuild2/lvm2_create_stage.go b/internal/osbuild/lvm2_create_stage.go
similarity index 98%
rename from internal/osbuild2/lvm2_create_stage.go
rename to internal/osbuild/lvm2_create_stage.go
index d1e3ed227..a29ddb2a8 100644
--- a/internal/osbuild2/lvm2_create_stage.go
+++ b/internal/osbuild/lvm2_create_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/lvm2_lv_device.go b/internal/osbuild/lvm2_lv_device.go
similarity index 95%
rename from internal/osbuild2/lvm2_lv_device.go
rename to internal/osbuild/lvm2_lv_device.go
index 0db39d439..9be107477 100644
--- a/internal/osbuild2/lvm2_lv_device.go
+++ b/internal/osbuild/lvm2_lv_device.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Provide access to LVM2 Logical Volume (LV)
 
diff --git a/internal/osbuild2/lvm2_metadata_stage.go b/internal/osbuild/lvm2_metadata_stage.go
similarity index 98%
rename from internal/osbuild2/lvm2_metadata_stage.go
rename to internal/osbuild/lvm2_metadata_stage.go
index 382107ee0..4d3ce3bd7 100644
--- a/internal/osbuild2/lvm2_metadata_stage.go
+++ b/internal/osbuild/lvm2_metadata_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/mkdir_stage.go b/internal/osbuild/mkdir_stage.go
similarity index 96%
rename from internal/osbuild2/mkdir_stage.go
rename to internal/osbuild/mkdir_stage.go
index 6a386299f..5cef1c612 100644
--- a/internal/osbuild2/mkdir_stage.go
+++ b/internal/osbuild/mkdir_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import "os"
 
diff --git a/internal/osbuild2/mkfs_btrfs_stage.go b/internal/osbuild/mkfs_btrfs_stage.go
similarity index 95%
rename from internal/osbuild2/mkfs_btrfs_stage.go
rename to internal/osbuild/mkfs_btrfs_stage.go
index a7f64cceb..3487a7ae0 100644
--- a/internal/osbuild2/mkfs_btrfs_stage.go
+++ b/internal/osbuild/mkfs_btrfs_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type MkfsBtrfsStageOptions struct {
 	UUID  string `json:"uuid"`
diff --git a/internal/osbuild2/mkfs_ext4_stage.go b/internal/osbuild/mkfs_ext4_stage.go
similarity index 95%
rename from internal/osbuild2/mkfs_ext4_stage.go
rename to internal/osbuild/mkfs_ext4_stage.go
index bfa0be92f..aefa42f66 100644
--- a/internal/osbuild2/mkfs_ext4_stage.go
+++ b/internal/osbuild/mkfs_ext4_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type MkfsExt4StageOptions struct {
 	UUID  string `json:"uuid"`
diff --git a/internal/osbuild2/mkfs_fat_stage.go b/internal/osbuild/mkfs_fat_stage.go
similarity index 95%
rename from internal/osbuild2/mkfs_fat_stage.go
rename to internal/osbuild/mkfs_fat_stage.go
index ba8092c67..4480eaaf1 100644
--- a/internal/osbuild2/mkfs_fat_stage.go
+++ b/internal/osbuild/mkfs_fat_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type MkfsFATStageOptions struct {
 	VolID   string `json:"volid"`
diff --git a/internal/osbuild2/mkfs_stage.go b/internal/osbuild/mkfs_stage.go
similarity index 99%
rename from internal/osbuild2/mkfs_stage.go
rename to internal/osbuild/mkfs_stage.go
index 7ee640f4b..86f06bb8c 100644
--- a/internal/osbuild2/mkfs_stage.go
+++ b/internal/osbuild/mkfs_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"strings"
diff --git a/internal/osbuild2/mkfs_xfs_stage.go b/internal/osbuild/mkfs_xfs_stage.go
similarity index 95%
rename from internal/osbuild2/mkfs_xfs_stage.go
rename to internal/osbuild/mkfs_xfs_stage.go
index 14b5a2ac0..7637893ca 100644
--- a/internal/osbuild2/mkfs_xfs_stage.go
+++ b/internal/osbuild/mkfs_xfs_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type MkfsXfsStageOptions struct {
 	UUID  string `json:"uuid"`
diff --git a/internal/osbuild2/modprobe_stage.go b/internal/osbuild/modprobe_stage.go
similarity index 99%
rename from internal/osbuild2/modprobe_stage.go
rename to internal/osbuild/modprobe_stage.go
index caedbbcbe..258dbdaec 100644
--- a/internal/osbuild2/modprobe_stage.go
+++ b/internal/osbuild/modprobe_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/mount.go b/internal/osbuild/mount.go
similarity index 94%
rename from internal/osbuild2/mount.go
rename to internal/osbuild/mount.go
index af629d555..3aed31db1 100644
--- a/internal/osbuild2/mount.go
+++ b/internal/osbuild/mount.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type Mounts []Mount
 
diff --git a/internal/osbuild2/nginxconf_stage.go b/internal/osbuild/nginxconf_stage.go
similarity index 97%
rename from internal/osbuild2/nginxconf_stage.go
rename to internal/osbuild/nginxconf_stage.go
index 2dc6ad0f9..adc9b1ddb 100644
--- a/internal/osbuild2/nginxconf_stage.go
+++ b/internal/osbuild/nginxconf_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type NginxConfigStageOptions struct {
 	// Config file location
diff --git a/internal/osbuild2/oci_archive_stage.go b/internal/osbuild/oci_archive_stage.go
similarity index 99%
rename from internal/osbuild2/oci_archive_stage.go
rename to internal/osbuild/oci_archive_stage.go
index aefe5921a..2b56db86d 100644
--- a/internal/osbuild2/oci_archive_stage.go
+++ b/internal/osbuild/oci_archive_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"bytes"
diff --git a/internal/osbuild2/osbuild-exec.go b/internal/osbuild/osbuild-exec.go
similarity index 99%
rename from internal/osbuild2/osbuild-exec.go
rename to internal/osbuild/osbuild-exec.go
index d559a7bee..6c3715a3c 100644
--- a/internal/osbuild2/osbuild-exec.go
+++ b/internal/osbuild/osbuild-exec.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"bytes"
diff --git a/internal/osbuild2/osbuild.go b/internal/osbuild/osbuild.go
similarity index 95%
rename from internal/osbuild2/osbuild.go
rename to internal/osbuild/osbuild.go
index 3653c5925..738df597d 100644
--- a/internal/osbuild2/osbuild.go
+++ b/internal/osbuild/osbuild.go
@@ -1,6 +1,6 @@
 // Package osbuild provides primitives for representing and (un)marshalling
-// OSBuild (schema v1) types.
-package osbuild2
+// OSBuild (schema v2) types.
+package osbuild
 
 // A Manifest represents an OSBuild source and pipeline manifest
 type Manifest struct {
diff --git a/internal/osbuild2/ostree_commit_stage.go b/internal/osbuild/ostree_commit_stage.go
similarity index 99%
rename from internal/osbuild2/ostree_commit_stage.go
rename to internal/osbuild/ostree_commit_stage.go
index 83630960d..05e22d077 100644
--- a/internal/osbuild2/ostree_commit_stage.go
+++ b/internal/osbuild/ostree_commit_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type OSTreeCommitStageOptions struct {
 	// OStree ref to create for the commit
diff --git a/internal/osbuild2/ostree_config_stage.go b/internal/osbuild/ostree_config_stage.go
similarity index 97%
rename from internal/osbuild2/ostree_config_stage.go
rename to internal/osbuild/ostree_config_stage.go
index 3a45b570b..d7eac5599 100644
--- a/internal/osbuild2/ostree_config_stage.go
+++ b/internal/osbuild/ostree_config_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Options for the org.osbuild.ostree.config stage.
 type OSTreeConfigStageOptions struct {
diff --git a/internal/osbuild2/ostree_deploy_stage.go b/internal/osbuild/ostree_deploy_stage.go
similarity index 98%
rename from internal/osbuild2/ostree_deploy_stage.go
rename to internal/osbuild/ostree_deploy_stage.go
index 953e52eef..314864ce8 100644
--- a/internal/osbuild2/ostree_deploy_stage.go
+++ b/internal/osbuild/ostree_deploy_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/ostree_fillvar_stage.go b/internal/osbuild/ostree_fillvar_stage.go
similarity index 97%
rename from internal/osbuild2/ostree_fillvar_stage.go
rename to internal/osbuild/ostree_fillvar_stage.go
index 8f8d192c4..d9c1d1c5a 100644
--- a/internal/osbuild2/ostree_fillvar_stage.go
+++ b/internal/osbuild/ostree_fillvar_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Options for the org.osbuild.ostree.fillvar stage.
 type OSTreeFillvarStageOptions struct {
diff --git a/internal/osbuild2/ostree_init_fs_stage.go b/internal/osbuild/ostree_init_fs_stage.go
similarity index 90%
rename from internal/osbuild2/ostree_init_fs_stage.go
rename to internal/osbuild/ostree_init_fs_stage.go
index ae04467bd..1c9fb6a6d 100644
--- a/internal/osbuild2/ostree_init_fs_stage.go
+++ b/internal/osbuild/ostree_init_fs_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // A new org.osbuild.ostree.init stage to create an OSTree repository
 func OSTreeInitFsStage() *Stage {
diff --git a/internal/osbuild2/ostree_init_stage.go b/internal/osbuild/ostree_init_stage.go
similarity index 97%
rename from internal/osbuild2/ostree_init_stage.go
rename to internal/osbuild/ostree_init_stage.go
index b7f0d60c2..de12ea903 100644
--- a/internal/osbuild2/ostree_init_stage.go
+++ b/internal/osbuild/ostree_init_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type InitMode string
 
diff --git a/internal/osbuild2/ostree_input.go b/internal/osbuild/ostree_input.go
similarity index 98%
rename from internal/osbuild2/ostree_input.go
rename to internal/osbuild/ostree_input.go
index b1934e3dc..edc3db160 100644
--- a/internal/osbuild2/ostree_input.go
+++ b/internal/osbuild/ostree_input.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Inputs for ostree commits
 type OSTreeInput struct {
diff --git a/internal/osbuild2/ostree_os_init_stage.go b/internal/osbuild/ostree_os_init_stage.go
similarity index 96%
rename from internal/osbuild2/ostree_os_init_stage.go
rename to internal/osbuild/ostree_os_init_stage.go
index 72cb91341..43ba02263 100644
--- a/internal/osbuild2/ostree_os_init_stage.go
+++ b/internal/osbuild/ostree_os_init_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Options for the org.osbuild.ostree.os-init stage.
 type OSTreeOsInitStageOptions struct {
diff --git a/internal/osbuild2/ostree_passwd_stage.go b/internal/osbuild/ostree_passwd_stage.go
similarity index 97%
rename from internal/osbuild2/ostree_passwd_stage.go
rename to internal/osbuild/ostree_passwd_stage.go
index e55bb9c38..81dc04dc4 100644
--- a/internal/osbuild2/ostree_passwd_stage.go
+++ b/internal/osbuild/ostree_passwd_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // The org.osbuild.ostree.passwd stage has no options so far.
 type OSTreePasswdStageOptions struct {
diff --git a/internal/osbuild2/ostree_preptree_stage.go b/internal/osbuild/ostree_preptree_stage.go
similarity index 97%
rename from internal/osbuild2/ostree_preptree_stage.go
rename to internal/osbuild/ostree_preptree_stage.go
index 4ae592756..ba0a8a1ba 100644
--- a/internal/osbuild2/ostree_preptree_stage.go
+++ b/internal/osbuild/ostree_preptree_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Transforms the tree to an ostree layout
 
diff --git a/internal/osbuild2/ostree_pull_stage.go b/internal/osbuild/ostree_pull_stage.go
similarity index 98%
rename from internal/osbuild2/ostree_pull_stage.go
rename to internal/osbuild/ostree_pull_stage.go
index a2a762ae5..ce0025ec7 100644
--- a/internal/osbuild2/ostree_pull_stage.go
+++ b/internal/osbuild/ostree_pull_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Options for the org.osbuild.ostree.pull stage.
 type OSTreePullStageOptions struct {
diff --git a/internal/osbuild2/ostree_remotes_stage.go b/internal/osbuild/ostree_remotes_stage.go
similarity index 98%
rename from internal/osbuild2/ostree_remotes_stage.go
rename to internal/osbuild/ostree_remotes_stage.go
index f81de2add..e6f115708 100644
--- a/internal/osbuild2/ostree_remotes_stage.go
+++ b/internal/osbuild/ostree_remotes_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Configure OSTree remotes for a repository
 
diff --git a/internal/osbuild2/ostree_selinux_stage.go b/internal/osbuild/ostree_selinux_stage.go
similarity index 96%
rename from internal/osbuild2/ostree_selinux_stage.go
rename to internal/osbuild/ostree_selinux_stage.go
index e2a0b27ea..56d4c177d 100644
--- a/internal/osbuild2/ostree_selinux_stage.go
+++ b/internal/osbuild/ostree_selinux_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Options for the org.osbuild.ostree.selinux stage.
 type OSTreeSelinuxStageOptions struct {
diff --git a/internal/osbuild2/ostree_source.go b/internal/osbuild/ostree_source.go
similarity index 95%
rename from internal/osbuild2/ostree_source.go
rename to internal/osbuild/ostree_source.go
index 6afacd886..adc357eff 100644
--- a/internal/osbuild2/ostree_source.go
+++ b/internal/osbuild/ostree_source.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // The commits to fetch indexed their checksum
 type OSTreeSource struct {
diff --git a/internal/osbuild2/pam_limits_conf_stage.go b/internal/osbuild/pam_limits_conf_stage.go
similarity index 99%
rename from internal/osbuild2/pam_limits_conf_stage.go
rename to internal/osbuild/pam_limits_conf_stage.go
index 51bec9314..642655361 100644
--- a/internal/osbuild2/pam_limits_conf_stage.go
+++ b/internal/osbuild/pam_limits_conf_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/pwquality_conf_stage.go b/internal/osbuild/pwquality_conf_stage.go
similarity index 97%
rename from internal/osbuild2/pwquality_conf_stage.go
rename to internal/osbuild/pwquality_conf_stage.go
index 0d00f0edd..8e3792dd8 100644
--- a/internal/osbuild2/pwquality_conf_stage.go
+++ b/internal/osbuild/pwquality_conf_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type PwqualityConfConfig struct {
 	Minlen   *int `json:"minlen,omitempty"`
diff --git a/internal/osbuild2/qemu_stage.go b/internal/osbuild/qemu_stage.go
similarity index 99%
rename from internal/osbuild2/qemu_stage.go
rename to internal/osbuild/qemu_stage.go
index 7e32997ce..dd4e43b82 100644
--- a/internal/osbuild2/qemu_stage.go
+++ b/internal/osbuild/qemu_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/result.go b/internal/osbuild/result.go
similarity index 55%
rename from internal/osbuild2/result.go
rename to internal/osbuild/result.go
index 2bdf5bbd7..017912e9e 100644
--- a/internal/osbuild2/result.go
+++ b/internal/osbuild/result.go
@@ -1,12 +1,10 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
 	"fmt"
 	"io"
 	"sort"
-
-	"github.com/osbuild/osbuild-composer/internal/osbuild1"
 )
 
 type Result struct {
@@ -95,15 +93,14 @@ func (md *PipelineMetadata) UnmarshalJSON(data []byte) error {
 
 func (res *Result) UnmarshalJSON(data []byte) error {
 	// detect if the input is v1 result
-	if v1Result, err := isV1Result(data); err != nil {
+	if isV1, err := isV1Result(data); err != nil {
 		return err
-	} else if v1Result {
-		var resv1 osbuild1.Result
+	} else if isV1 {
+		var resv1 v1Result
 		if err := json.Unmarshal(data, &resv1); err != nil {
 			return err
 		}
-		res.fromV1(resv1)
-		return nil
+		return res.fromV1(resv1)
 	}
 
 	// otherwise, unmarshal using a type alias to prevent recursive calls to
@@ -118,90 +115,6 @@ func (res *Result) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-func convertStageResult(sr1 *osbuild1.StageResult) (*StageResult, StageMetadata) {
-	sr := &StageResult{
-		ID:      "",
-		Type:    sr1.Name,
-		Output:  sr1.Output,
-		Success: sr1.Success,
-		Error:   "",
-	}
-
-	var md StageMetadata = nil
-	if sr1.Metadata != nil {
-		switch md1 := sr1.Metadata.(type) {
-		case *osbuild1.RPMStageMetadata:
-			rpmmd := new(RPMStageMetadata)
-			rpmmd.Packages = make([]RPMPackageMetadata, len(md1.Packages))
-			for idx, pkg := range md1.Packages {
-				rpmmd.Packages[idx] = RPMPackageMetadata(pkg)
-			}
-			md = rpmmd
-		case *osbuild1.OSTreeCommitStageMetadata:
-			commitmd := new(OSTreeCommitStageMetadata)
-			commitmd.Compose = OSTreeCommitStageMetadataCompose(md1.Compose)
-			md = commitmd
-		}
-
-	}
-	return sr, md
-}
-
-func convertStageResults(v1Stages []osbuild1.StageResult) (PipelineResult, PipelineMetadata) {
-	result := make([]StageResult, len(v1Stages))
-	metadata := make(map[string]StageMetadata)
-	for idx, srv1 := range v1Stages {
-		// Implicit memory alasing doesn't couse any bug in this case
-		/* #nosec G601 */
-		stageResult, stageMetadata := convertStageResult(&srv1)
-		result[idx] = *stageResult
-		if stageMetadata != nil {
-			metadata[stageResult.Type] = stageMetadata
-		}
-	}
-	return result, metadata
-}
-
-func (res *Result) fromV1(resv1 osbuild1.Result) {
-	res.Success = resv1.Success
-	res.Type = "result"
-
-	log := make(map[string]PipelineResult)
-	metadata := make(map[string]PipelineMetadata)
-
-	// make build pipeline from build result
-	if resv1.Build != nil {
-		buildResult, buildMetadata := convertStageResults(resv1.Build.Stages)
-		log["build"] = buildResult
-		if len(buildMetadata) > 0 {
-			metadata["build"] = buildMetadata
-		}
-	}
-
-	// make assembler pipeline from assembler result
-	if resv1.Assembler != nil {
-		assemblerResult, assemblerMetadata := convertStageResult(resv1.Assembler)
-		log["assembler"] = []StageResult{*assemblerResult}
-		if assemblerMetadata != nil {
-			metadata["assembler"] = map[string]StageMetadata{
-				resv1.Assembler.Name: assemblerMetadata,
-			}
-		}
-	}
-
-	// make os pipeline from main stage results
-	if len(resv1.Stages) > 0 {
-		osResult, osMetadata := convertStageResults(resv1.Stages)
-		log["os"] = osResult
-		if len(osMetadata) > 0 {
-			metadata["os"] = osMetadata
-		}
-	}
-
-	res.Log = log
-	res.Metadata = metadata
-}
-
 func (res *Result) Write(writer io.Writer) error {
 	if res == nil || res.Log == nil {
 		fmt.Fprintf(writer, "The compose result is empty.\n")
@@ -242,25 +155,3 @@ func (res *Result) Write(writer io.Writer) error {
 
 	return nil
 }
-
-// isV1Result returns true if data contains a json-encoded osbuild result
-// in version 1 schema.
-//
-// It detects the schema version by checking if the decoded json contains at
-// least one of the three top-level result objects: Build, Stages, or Assembler
-//
-// error is non-nil when data isn't a json-encoded object.
-func isV1Result(data []byte) (bool, error) {
-	var v1ResultStub struct {
-		Build     interface{} `json:"build"`
-		Stages    interface{} `json:"stages"`
-		Assembler interface{} `json:"assembler"`
-	}
-
-	err := json.Unmarshal(data, &v1ResultStub)
-	if err != nil {
-		return false, err
-	}
-
-	return v1ResultStub.Build != nil || v1ResultStub.Stages != nil || v1ResultStub.Assembler != nil, nil
-}
diff --git a/internal/osbuild2/rhsm_stage.go b/internal/osbuild/rhsm_stage.go
similarity index 99%
rename from internal/osbuild2/rhsm_stage.go
rename to internal/osbuild/rhsm_stage.go
index 9f487ea95..fe755d7e1 100644
--- a/internal/osbuild2/rhsm_stage.go
+++ b/internal/osbuild/rhsm_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // RHSMStageOptions describes configuration of the RHSM stage.
 //
diff --git a/internal/osbuild2/rpm_stage.go b/internal/osbuild/rpm_stage.go
similarity index 99%
rename from internal/osbuild2/rpm_stage.go
rename to internal/osbuild/rpm_stage.go
index 0292d595f..1d4bbfa5c 100644
--- a/internal/osbuild2/rpm_stage.go
+++ b/internal/osbuild/rpm_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
diff --git a/internal/osbuild2/script_stage.go b/internal/osbuild/script_stage.go
similarity index 97%
rename from internal/osbuild2/script_stage.go
rename to internal/osbuild/script_stage.go
index a4ff09ef1..d3c1f5dfc 100644
--- a/internal/osbuild2/script_stage.go
+++ b/internal/osbuild/script_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // The ScriptStageOptions specifies a custom script to run in the image
 type ScriptStageOptions struct {
diff --git a/internal/osbuild2/selinux_config_stage.go b/internal/osbuild/selinux_config_stage.go
similarity index 98%
rename from internal/osbuild2/selinux_config_stage.go
rename to internal/osbuild/selinux_config_stage.go
index 3aa96694e..cbe8974c3 100644
--- a/internal/osbuild2/selinux_config_stage.go
+++ b/internal/osbuild/selinux_config_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // The SELinuxConfigStageOptions describe the desired SELinux policy state
 // and type on the system.
diff --git a/internal/osbuild2/selinux_stage.go b/internal/osbuild/selinux_stage.go
similarity index 98%
rename from internal/osbuild2/selinux_stage.go
rename to internal/osbuild/selinux_stage.go
index 4757283bc..d5b0512ce 100644
--- a/internal/osbuild2/selinux_stage.go
+++ b/internal/osbuild/selinux_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // The SELinuxStageOptions describe how to apply selinux labels.
 //
diff --git a/internal/osbuild2/sfdisk_stage.go b/internal/osbuild/sfdisk_stage.go
similarity index 98%
rename from internal/osbuild2/sfdisk_stage.go
rename to internal/osbuild/sfdisk_stage.go
index 75356b126..9e5f441b5 100644
--- a/internal/osbuild2/sfdisk_stage.go
+++ b/internal/osbuild/sfdisk_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Partition a target using sfdisk(8)
 
diff --git a/internal/osbuild2/sgdisk_stage.go b/internal/osbuild/sgdisk_stage.go
similarity index 98%
rename from internal/osbuild2/sgdisk_stage.go
rename to internal/osbuild/sgdisk_stage.go
index 6b21695e0..aa011def8 100644
--- a/internal/osbuild2/sgdisk_stage.go
+++ b/internal/osbuild/sgdisk_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Partition a target using sgdisk(8)
 
diff --git a/internal/osbuild2/source.go b/internal/osbuild/source.go
similarity index 99%
rename from internal/osbuild2/source.go
rename to internal/osbuild/source.go
index 794e8d862..b67c2231c 100644
--- a/internal/osbuild2/source.go
+++ b/internal/osbuild/source.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/sshd_config_stage.go b/internal/osbuild/sshd_config_stage.go
similarity index 99%
rename from internal/osbuild2/sshd_config_stage.go
rename to internal/osbuild/sshd_config_stage.go
index 9880079fd..9672cfd2a 100644
--- a/internal/osbuild2/sshd_config_stage.go
+++ b/internal/osbuild/sshd_config_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/stage.go b/internal/osbuild/stage.go
similarity index 97%
rename from internal/osbuild2/stage.go
rename to internal/osbuild/stage.go
index 639c56f4b..0051c9d7e 100644
--- a/internal/osbuild2/stage.go
+++ b/internal/osbuild/stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Single stage of a pipeline executing one step
 type Stage struct {
diff --git a/internal/osbuild2/sysconfig_stage.go b/internal/osbuild/sysconfig_stage.go
similarity index 99%
rename from internal/osbuild2/sysconfig_stage.go
rename to internal/osbuild/sysconfig_stage.go
index 9a9300e0c..d4f2a4257 100644
--- a/internal/osbuild2/sysconfig_stage.go
+++ b/internal/osbuild/sysconfig_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type SysconfigStageOptions struct {
 	Kernel         *SysconfigKernelOptions  `json:"kernel,omitempty"`
diff --git a/internal/osbuild2/sysctld_stage.go b/internal/osbuild/sysctld_stage.go
similarity index 99%
rename from internal/osbuild2/sysctld_stage.go
rename to internal/osbuild/sysctld_stage.go
index 777099ff6..c4a7e16d8 100644
--- a/internal/osbuild2/sysctld_stage.go
+++ b/internal/osbuild/sysctld_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/systemd_logind_stage.go b/internal/osbuild/systemd_logind_stage.go
similarity index 98%
rename from internal/osbuild2/systemd_logind_stage.go
rename to internal/osbuild/systemd_logind_stage.go
index db20ac7a0..8e43b1581 100644
--- a/internal/osbuild2/systemd_logind_stage.go
+++ b/internal/osbuild/systemd_logind_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/systemd_stage.go b/internal/osbuild/systemd_stage.go
similarity index 96%
rename from internal/osbuild2/systemd_stage.go
rename to internal/osbuild/systemd_stage.go
index ca0b80a64..1d8083127 100644
--- a/internal/osbuild2/systemd_stage.go
+++ b/internal/osbuild/systemd_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type SystemdStageOptions struct {
 	EnabledServices  []string `json:"enabled_services,omitempty"`
diff --git a/internal/osbuild2/systemd_unit_stage.go b/internal/osbuild/systemd_unit_stage.go
similarity index 97%
rename from internal/osbuild2/systemd_unit_stage.go
rename to internal/osbuild/systemd_unit_stage.go
index 708ced8cc..906bf6b16 100644
--- a/internal/osbuild2/systemd_unit_stage.go
+++ b/internal/osbuild/systemd_unit_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type SystemdUnitStageOptions struct {
 	Unit   string                   `json:"unit"`
diff --git a/internal/osbuild2/tar_stage.go b/internal/osbuild/tar_stage.go
similarity index 99%
rename from internal/osbuild2/tar_stage.go
rename to internal/osbuild/tar_stage.go
index 5abbbeeb6..8676b84f9 100644
--- a/internal/osbuild2/tar_stage.go
+++ b/internal/osbuild/tar_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import "fmt"
 
diff --git a/internal/osbuild2/timezone_stage.go b/internal/osbuild/timezone_stage.go
similarity index 93%
rename from internal/osbuild2/timezone_stage.go
rename to internal/osbuild/timezone_stage.go
index cdf01e6b6..b4f98b980 100644
--- a/internal/osbuild2/timezone_stage.go
+++ b/internal/osbuild/timezone_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type TimezoneStageOptions struct {
 	Zone string `json:"zone"`
diff --git a/internal/osbuild2/tmpfilesd_stage.go b/internal/osbuild/tmpfilesd_stage.go
similarity index 99%
rename from internal/osbuild2/tmpfilesd_stage.go
rename to internal/osbuild/tmpfilesd_stage.go
index bcbfdf93b..436ed2d2f 100644
--- a/internal/osbuild2/tmpfilesd_stage.go
+++ b/internal/osbuild/tmpfilesd_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/tree_input.go b/internal/osbuild/tree_input.go
similarity index 93%
rename from internal/osbuild2/tree_input.go
rename to internal/osbuild/tree_input.go
index d0be6224f..e9874d722 100644
--- a/internal/osbuild2/tree_input.go
+++ b/internal/osbuild/tree_input.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Tree inputs
 type TreeInput struct {
diff --git a/internal/osbuild2/truncate_stage.go b/internal/osbuild/truncate_stage.go
similarity index 95%
rename from internal/osbuild2/truncate_stage.go
rename to internal/osbuild/truncate_stage.go
index 65c61d2a4..530d8dbcc 100644
--- a/internal/osbuild2/truncate_stage.go
+++ b/internal/osbuild/truncate_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // Create, shrink, or extend a file
 
diff --git a/internal/osbuild2/tuned_stage.go b/internal/osbuild/tuned_stage.go
similarity index 98%
rename from internal/osbuild2/tuned_stage.go
rename to internal/osbuild/tuned_stage.go
index 82041864d..0bcfe8edf 100644
--- a/internal/osbuild2/tuned_stage.go
+++ b/internal/osbuild/tuned_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/udev_rules_stage.go b/internal/osbuild/udev_rules_stage.go
similarity index 99%
rename from internal/osbuild2/udev_rules_stage.go
rename to internal/osbuild/udev_rules_stage.go
index b5a865219..4dc9cca21 100644
--- a/internal/osbuild2/udev_rules_stage.go
+++ b/internal/osbuild/udev_rules_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/users_stage.go b/internal/osbuild/users_stage.go
similarity index 98%
rename from internal/osbuild2/users_stage.go
rename to internal/osbuild/users_stage.go
index 7d10d90f7..6a1a303b7 100644
--- a/internal/osbuild2/users_stage.go
+++ b/internal/osbuild/users_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
diff --git a/internal/osbuild/v1result.go b/internal/osbuild/v1result.go
new file mode 100644
index 000000000..85816b023
--- /dev/null
+++ b/internal/osbuild/v1result.go
@@ -0,0 +1,148 @@
+package osbuild
+
+// Functions and types for handling old (v1) results.
+
+import (
+	"encoding/json"
+)
+
+type v1StageResult struct {
+	Name     string          `json:"name"`
+	Options  json.RawMessage `json:"options"`
+	Success  bool            `json:"success"`
+	Output   string          `json:"output"`
+	Metadata json.RawMessage `json:"metadata"`
+}
+
+type v1BuildResult struct {
+	Stages  []v1StageResult `json:"stages"`
+	TreeID  string          `json:"tree_id"`
+	Success bool            `json:"success"`
+}
+
+type v1Result struct {
+	TreeID    string          `json:"tree_id"`
+	OutputID  string          `json:"output_id"`
+	Build     *v1BuildResult  `json:"build"`
+	Stages    []v1StageResult `json:"stages"`
+	Assembler *v1StageResult  `json:"assembler"`
+	Success   bool            `json:"success"`
+}
+
+func (res *Result) fromV1(resv1 v1Result) error {
+	res.Success = resv1.Success
+	res.Type = "result"
+
+	log := make(map[string]PipelineResult)
+	metadata := make(map[string]PipelineMetadata)
+
+	// make build pipeline from build result
+	if resv1.Build != nil {
+		buildResult, buildMetadata, err := convertStageResults(resv1.Build.Stages)
+		if err != nil {
+			return err
+		}
+		log["build"] = buildResult
+		if len(buildMetadata) > 0 {
+			metadata["build"] = buildMetadata
+		}
+	}
+
+	// make assembler pipeline from assembler result
+	if resv1.Assembler != nil {
+		assemblerResult, assemblerMetadata, err := convertStageResult(resv1.Assembler)
+		if err != nil {
+			return err
+		}
+		log["assembler"] = []StageResult{*assemblerResult}
+		if assemblerMetadata != nil {
+			metadata["assembler"] = map[string]StageMetadata{
+				resv1.Assembler.Name: assemblerMetadata,
+			}
+		}
+	}
+
+	// make os pipeline from main stage results
+	if len(resv1.Stages) > 0 {
+		osResult, osMetadata, err := convertStageResults(resv1.Stages)
+		if err != nil {
+			return err
+		}
+		log["os"] = osResult
+		if len(osMetadata) > 0 {
+			metadata["os"] = osMetadata
+		}
+	}
+
+	res.Log = log
+	res.Metadata = metadata
+	return nil
+}
+
+func convertStageResults(v1Stages []v1StageResult) (PipelineResult, PipelineMetadata, error) {
+	result := make([]StageResult, len(v1Stages))
+	metadata := make(map[string]StageMetadata)
+	for idx, srv1 := range v1Stages {
+		// Implicit memory alasing doesn't couse any bug in this case
+		/* #nosec G601 */
+		stageResult, stageMetadata, err := convertStageResult(&srv1)
+		if err != nil {
+			return nil, nil, err
+		}
+		result[idx] = *stageResult
+		if stageMetadata != nil {
+			metadata[stageResult.Type] = stageMetadata
+		}
+	}
+	return result, metadata, nil
+}
+
+func convertStageResult(sr1 *v1StageResult) (*StageResult, StageMetadata, error) {
+	sr := &StageResult{
+		ID:      "",
+		Type:    sr1.Name,
+		Output:  sr1.Output,
+		Success: sr1.Success,
+		Error:   "",
+	}
+
+	var metadata StageMetadata
+	switch sr1.Name {
+	case "org.osbuild.rpm":
+		metadata = new(RPMStageMetadata)
+		if err := json.Unmarshal(sr1.Metadata, metadata); err != nil {
+			return nil, nil, err
+		}
+	case "org.osbuild.ostree.commit":
+		metadata = new(OSTreeCommitStageMetadata)
+		if err := json.Unmarshal(sr1.Metadata, metadata); err != nil {
+			return nil, nil, err
+		}
+	default:
+		metadata = RawStageMetadata(sr1.Metadata)
+	}
+
+	return sr, metadata, nil
+}
+
+// isV1Result returns true if data contains a json-encoded osbuild result
+// in version 1 schema.
+//
+// It detects the schema version by checking if the decoded json contains at
+// least one of the three top-level result objects: Build, Stages, or Assembler
+//
+// error is non-nil when data isn't a json-encoded object.
+func isV1Result(data []byte) (bool, error) {
+	var v1ResultStub struct {
+		Build     interface{} `json:"build"`
+		Stages    interface{} `json:"stages"`
+		Assembler interface{} `json:"assembler"`
+	}
+
+	err := json.Unmarshal(data, &v1ResultStub)
+	if err != nil {
+		return false, err
+	}
+
+	return v1ResultStub.Build != nil || v1ResultStub.Stages != nil || v1ResultStub.Assembler != nil, nil
+}
diff --git a/internal/osbuild2/waagent_conf.go b/internal/osbuild/waagent_conf.go
similarity index 96%
rename from internal/osbuild2/waagent_conf.go
rename to internal/osbuild/waagent_conf.go
index d1e5d0c56..d5e75928f 100644
--- a/internal/osbuild2/waagent_conf.go
+++ b/internal/osbuild/waagent_conf.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type WAAgentConfig struct {
 	RDFormat     *bool `json:"ResourceDisk.Format"`
diff --git a/internal/osbuild2/xfs_mount.go b/internal/osbuild/xfs_mount.go
similarity index 90%
rename from internal/osbuild2/xfs_mount.go
rename to internal/osbuild/xfs_mount.go
index 0f9e133f9..d7d771fd6 100644
--- a/internal/osbuild2/xfs_mount.go
+++ b/internal/osbuild/xfs_mount.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 func NewXfsMount(name, source, target string) *Mount {
 	return &Mount{
diff --git a/internal/osbuild2/xorrisofs_stage.go b/internal/osbuild/xorrisofs_stage.go
similarity index 99%
rename from internal/osbuild2/xorrisofs_stage.go
rename to internal/osbuild/xorrisofs_stage.go
index 275168a28..f57ffdec7 100644
--- a/internal/osbuild2/xorrisofs_stage.go
+++ b/internal/osbuild/xorrisofs_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type XorrisofsStageOptions struct {
 	// Filename of the ISO to create
diff --git a/internal/osbuild2/xz_stage.go b/internal/osbuild/xz_stage.go
similarity index 97%
rename from internal/osbuild2/xz_stage.go
rename to internal/osbuild/xz_stage.go
index bf0fc8b2a..9c8ccbedb 100644
--- a/internal/osbuild2/xz_stage.go
+++ b/internal/osbuild/xz_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 type XzStageOptions struct {
 	// Filename for xz archive
diff --git a/internal/osbuild2/yum_config_stage.go b/internal/osbuild/yum_config_stage.go
similarity index 98%
rename from internal/osbuild2/yum_config_stage.go
rename to internal/osbuild/yum_config_stage.go
index 89d6f2cc8..94b3be5c8 100644
--- a/internal/osbuild2/yum_config_stage.go
+++ b/internal/osbuild/yum_config_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/yum_repos_stage.go b/internal/osbuild/yum_repos_stage.go
similarity index 99%
rename from internal/osbuild2/yum_repos_stage.go
rename to internal/osbuild/yum_repos_stage.go
index 3720f0f9f..257ce9147 100644
--- a/internal/osbuild2/yum_repos_stage.go
+++ b/internal/osbuild/yum_repos_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/zipl_inst_stage.go b/internal/osbuild/zipl_inst_stage.go
similarity index 99%
rename from internal/osbuild2/zipl_inst_stage.go
rename to internal/osbuild/zipl_inst_stage.go
index e897ed4a6..cdf03221d 100644
--- a/internal/osbuild2/zipl_inst_stage.go
+++ b/internal/osbuild/zipl_inst_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import "github.com/osbuild/osbuild-composer/internal/disk"
 
diff --git a/internal/osbuild2/zipl_stage.go b/internal/osbuild/zipl_stage.go
similarity index 97%
rename from internal/osbuild2/zipl_stage.go
rename to internal/osbuild/zipl_stage.go
index dd4480014..4a66204fd 100644
--- a/internal/osbuild2/zipl_stage.go
+++ b/internal/osbuild/zipl_stage.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 // The ZiplStageOptions describe how to create zipl stage
 //
diff --git a/internal/osbuild1/assembler.go b/internal/osbuild1/assembler.go
deleted file mode 100644
index f6a6fa357..000000000
--- a/internal/osbuild1/assembler.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package osbuild1
-
-import (
-	"encoding/json"
-	"errors"
-)
-
-// An Assembler turns a filesystem tree into a target image.
-type Assembler struct {
-	Name    string           `json:"name"`
-	Options AssemblerOptions `json:"options"`
-}
-
-// AssemblerOptions specify the operations of a given assembler-type.
-type AssemblerOptions interface {
-	isAssemblerOptions()
-}
-
-type rawAssembler struct {
-	Name    string          `json:"name"`
-	Options json.RawMessage `json:"options"`
-}
-
-// UnmarshalJSON unmarshals JSON into an Assembler object. Each type of
-// assembler has a custom unmarshaller for its options, selected based on the
-// stage name.
-func (assembler *Assembler) UnmarshalJSON(data []byte) error {
-	var rawAssembler rawAssembler
-	err := json.Unmarshal(data, &rawAssembler)
-	if err != nil {
-		return err
-	}
-	var options AssemblerOptions
-	switch rawAssembler.Name {
-	case "org.osbuild.ostree.commit":
-		options = new(OSTreeCommitAssemblerOptions)
-	case "org.osbuild.qemu":
-		options = new(QEMUAssemblerOptions)
-	case "org.osbuild.rawfs":
-		options = new(RawFSAssemblerOptions)
-	case "org.osbuild.tar":
-		options = new(TarAssemblerOptions)
-	default:
-		return errors.New("unexpected assembler name")
-	}
-	err = json.Unmarshal(rawAssembler.Options, options)
-	if err != nil {
-		return err
-	}
-
-	assembler.Name = rawAssembler.Name
-	assembler.Options = options
-
-	return nil
-}
diff --git a/internal/osbuild1/chrony_stage.go b/internal/osbuild1/chrony_stage.go
deleted file mode 100644
index a07ffa5fb..000000000
--- a/internal/osbuild1/chrony_stage.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package osbuild1
-
-type ChronyStageOptions struct {
-	Timeservers []string `json:"timeservers"`
-}
-
-func (ChronyStageOptions) isStageOptions() {}
-
-func NewChronyStage(options *ChronyStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.chrony",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/files_source.go b/internal/osbuild1/files_source.go
deleted file mode 100644
index 2cd43932f..000000000
--- a/internal/osbuild1/files_source.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-type Secret struct {
-	Name string `json:"name,omitempty"`
-}
-type FileSource struct {
-	URL     string  `json:"url"`
-	Secrets *Secret `json:"secrets,omitempty"`
-}
-
-// The FilesSourceOptions specifies a custom script to run in the image
-type FilesSource struct {
-	URLs map[string]FileSource `json:"urls"`
-}
-
-func (FilesSource) isSource() {}
diff --git a/internal/osbuild1/firewall_stage.go b/internal/osbuild1/firewall_stage.go
deleted file mode 100644
index 259c59891..000000000
--- a/internal/osbuild1/firewall_stage.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-type FirewallStageOptions struct {
-	Ports            []string `json:"ports,omitempty"`
-	EnabledServices  []string `json:"enabled_services,omitempty"`
-	DisabledServices []string `json:"disabled_services,omitempty"`
-}
-
-func (FirewallStageOptions) isStageOptions() {}
-
-func NewFirewallStage(options *FirewallStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.firewall",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/first_boot_stage.go b/internal/osbuild1/first_boot_stage.go
deleted file mode 100644
index b5269c233..000000000
--- a/internal/osbuild1/first_boot_stage.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package osbuild1
-
-type FirstBootStageOptions struct {
-	Commands       []string `json:"commands"`
-	WaitForNetwork bool     `json:"wait_for_network,omitempty"`
-}
-
-func (FirstBootStageOptions) isStageOptions() {}
-
-func NewFirstBootStage(options *FirstBootStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.first-boot",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/fix_bls_stage.go b/internal/osbuild1/fix_bls_stage.go
deleted file mode 100644
index ab87364d9..000000000
--- a/internal/osbuild1/fix_bls_stage.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package osbuild1
-
-// A FixBLSStageOptions struct is empty, as the stage takes no options.
-//
-// The FixBLSStage fixes the paths in the Boot Loader Specification
-// snippets installed into /boot. grub2's kernel install script will
-// try to guess the correct path to the kernel and bootloader, and adjust
-// the boot loader scripts accordingly. When run under OSBuild this does
-// not work correctly, so this stage essentially reverts the "fixup".
-type FixBLSStageOptions struct {
-}
-
-func (FixBLSStageOptions) isStageOptions() {}
-
-// NewFixBLSStage creates a new FixBLSStage.
-func NewFixBLSStage() *Stage {
-	return &Stage{
-		Name:    "org.osbuild.fix-bls",
-		Options: &FixBLSStageOptions{},
-	}
-}
diff --git a/internal/osbuild1/fstab_stage.go b/internal/osbuild1/fstab_stage.go
deleted file mode 100644
index 919eac6d0..000000000
--- a/internal/osbuild1/fstab_stage.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package osbuild1
-
-import (
-	"sort"
-
-	"github.com/osbuild/osbuild-composer/internal/disk"
-)
-
-// The FSTabStageOptions describe the content of the /etc/fstab file.
-//
-// The structure of the options follows the format of /etc/fstab, except
-// that filesystem must be identified by their UUID and ommitted fields
-// are set to their defaults (if possible).
-type FSTabStageOptions struct {
-	FileSystems []*FSTabEntry `json:"filesystems"`
-}
-
-func (FSTabStageOptions) isStageOptions() {}
-
-// NewFSTabStage creates a now FSTabStage object
-func NewFSTabStage(options *FSTabStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.fstab",
-		Options: options,
-	}
-}
-
-// An FSTabEntry represents one line in /etc/fstab. With the one exception
-// that the the spec field must be represented as an UUID.
-type FSTabEntry struct {
-	UUID    string `json:"uuid,omitempty"`
-	Label   string `json:"label,omitempty"`
-	VFSType string `json:"vfs_type"`
-	Path    string `json:"path,omitempty"`
-	Options string `json:"options,omitempty"`
-	Freq    uint64 `json:"freq,omitempty"`
-	PassNo  uint64 `json:"passno,omitempty"`
-}
-
-// AddFilesystem adds one entry to and FSTabStageOptions object.
-func (options *FSTabStageOptions) AddFilesystem(id string, vfsType string, path string, opts string, freq uint64, passNo uint64) {
-	options.FileSystems = append(options.FileSystems, &FSTabEntry{
-		UUID:    id,
-		VFSType: vfsType,
-		Path:    path,
-		Options: opts,
-		Freq:    freq,
-		PassNo:  passNo,
-	})
-}
-
-func NewFSTabStageOptions(pt *disk.PartitionTable) *FSTabStageOptions {
-	var options FSTabStageOptions
-	genOption := func(mnt disk.Mountable, path []disk.Entity) error {
-		fsSpec := mnt.GetFSSpec()
-		fsOptions := mnt.GetFSTabOptions()
-		options.AddFilesystem(fsSpec.UUID, mnt.GetFSType(), mnt.GetMountpoint(), fsOptions.MntOps, fsOptions.Freq, fsOptions.PassNo)
-		return nil
-	}
-
-	_ = pt.ForEachMountable(genOption)
-	// sort the entries by PassNo to maintain backward compatibility
-	sort.Slice(options.FileSystems, func(i, j int) bool {
-		return options.FileSystems[i].PassNo < options.FileSystems[j].PassNo
-	})
-	return &options
-}
diff --git a/internal/osbuild1/groups_stage.go b/internal/osbuild1/groups_stage.go
deleted file mode 100644
index e7dfe2606..000000000
--- a/internal/osbuild1/groups_stage.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package osbuild1
-
-import "github.com/osbuild/osbuild-composer/internal/blueprint"
-
-type GroupsStageOptions struct {
-	Groups map[string]GroupsStageOptionsGroup `json:"groups"`
-}
-
-func (GroupsStageOptions) isStageOptions() {}
-
-type GroupsStageOptionsGroup struct {
-	Name string `json:"name,omitempty"`
-	GID  *int   `json:"gid,omitempty"`
-}
-
-func NewGroupsStage(options *GroupsStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.groups",
-		Options: options,
-	}
-}
-
-func NewGroupsStageOptions(groups []blueprint.GroupCustomization) *GroupsStageOptions {
-	options := GroupsStageOptions{
-		Groups: map[string]GroupsStageOptionsGroup{},
-	}
-
-	for _, group := range groups {
-		options.Groups[group.Name] = GroupsStageOptionsGroup{
-			GID: group.GID,
-		}
-	}
-
-	return &options
-}
diff --git a/internal/osbuild1/grub2_stage.go b/internal/osbuild1/grub2_stage.go
deleted file mode 100644
index 3662d5758..000000000
--- a/internal/osbuild1/grub2_stage.go
+++ /dev/null
@@ -1,34 +0,0 @@
-package osbuild1
-
-import "github.com/google/uuid"
-
-// The GRUB2StageOptions describes the bootloader configuration.
-//
-// The stage is responsible for installing all bootloader files in
-// /boot as well as config files in /etc necessary for regenerating
-// the configuration in /boot.
-//
-// Note that it is the role of an assembler to install any necessary
-// bootloaders that are stored in the image outside of any filesystem.
-type GRUB2StageOptions struct {
-	RootFilesystemUUID uuid.UUID  `json:"root_fs_uuid"`
-	BootFilesystemUUID *uuid.UUID `json:"boot_fs_uuid,omitempty"`
-	KernelOptions      string     `json:"kernel_opts,omitempty"`
-	Legacy             string     `json:"legacy,omitempty"`
-	UEFI               *GRUB2UEFI `json:"uefi,omitempty"`
-	SavedEntry         string     `json:"saved_entry,omitempty"`
-}
-
-type GRUB2UEFI struct {
-	Vendor string `json:"vendor"`
-}
-
-func (GRUB2StageOptions) isStageOptions() {}
-
-// NewGRUB2Stage creates a new GRUB2 stage object.
-func NewGRUB2Stage(options *GRUB2StageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.grub2",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/hostname_stage.go b/internal/osbuild1/hostname_stage.go
deleted file mode 100644
index 4c835f3c0..000000000
--- a/internal/osbuild1/hostname_stage.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package osbuild1
-
-type HostnameStageOptions struct {
-	Hostname string `json:"hostname"`
-}
-
-func (HostnameStageOptions) isStageOptions() {}
-
-func NewHostnameStage(options *HostnameStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.hostname",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/kernel_cmdline_stage.go b/internal/osbuild1/kernel_cmdline_stage.go
deleted file mode 100644
index d63d57638..000000000
--- a/internal/osbuild1/kernel_cmdline_stage.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package osbuild1
-
-// KernelCmdlineStageOptions describe how to create kernel-cmdline stage
-//
-// Configures the kernel boot parameters, also known as the kernel command line.
-type KernelCmdlineStageOptions struct {
-	RootFsUUID string `json:"root_fs_uuid,omitempty"`
-	KernelOpts string `json:"kernel_opts,omitempty"`
-}
-
-func (KernelCmdlineStageOptions) isStageOptions() {}
-
-// NewKernelCmdlineStage creates a new kernel-cmdline Stage object.
-func NewKernelCmdlineStage(options *KernelCmdlineStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.kernel-cmdline",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/keymap_stage.go b/internal/osbuild1/keymap_stage.go
deleted file mode 100644
index 50d80a329..000000000
--- a/internal/osbuild1/keymap_stage.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package osbuild1
-
-type X11Keymap struct {
-	Layouts []string `json:"layouts"`
-}
-
-type KeymapStageOptions struct {
-	Keymap    string     `json:"keymap"`
-	X11Keymap *X11Keymap `json:"x11-keymap,omitempty"`
-}
-
-func (KeymapStageOptions) isStageOptions() {}
-
-func NewKeymapStage(options *KeymapStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.keymap",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/locale_stage.go b/internal/osbuild1/locale_stage.go
deleted file mode 100644
index f13600683..000000000
--- a/internal/osbuild1/locale_stage.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package osbuild1
-
-// The LocaleStageOptions describes the image's locale.
-//
-// A locale is typically specified as language_[territory], where language
-// is specified in ISO 639 and territory in ISO 3166.
-type LocaleStageOptions struct {
-	Language string `json:"language"`
-}
-
-func (LocaleStageOptions) isStageOptions() {}
-
-// NewLocaleStage creates a new Locale Stage object.
-func NewLocaleStage(options *LocaleStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.locale",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/osbuild.go b/internal/osbuild1/osbuild.go
deleted file mode 100644
index b9b1978b2..000000000
--- a/internal/osbuild1/osbuild.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Package osbuild provides primitives for representing and (un)marshalling
-// OSBuild (schema v1) types.
-package osbuild1
-
-// A Manifest represents an OSBuild source and pipeline manifest
-type Manifest struct {
-	Sources  Sources  `json:"sources"`
-	Pipeline Pipeline `json:"pipeline"`
-}
-
-// A Pipeline represents an OSBuild pipeline
-type Pipeline struct {
-	// The build environment which can run this pipeline
-	Build *Build `json:"build,omitempty"`
-	// Sequence of stages that produce the filesystem tree, which is the
-	// payload of the produced image.
-	Stages []*Stage `json:"stages,omitempty"`
-	// Assembler that assembles the filesystem tree into the target image.
-	Assembler *Assembler `json:"assembler,omitempty"`
-}
-
-type Build struct {
-	// Pipeline describes how to create the build root
-	Pipeline *Pipeline `json:"pipeline"`
-	// The runner to use in this build root
-	Runner string `json:"runner"`
-}
-
-// SetBuild sets the pipeline and runner for generating the build environment
-// for a pipeline.
-func (p *Pipeline) SetBuild(pipeline *Pipeline, runner string) {
-	p.Build = &Build{
-		Pipeline: pipeline,
-		Runner:   runner,
-	}
-}
-
-// AddStage appends a stage to the list of stages of a pipeline. The stages
-// will be executed in the order they are appended.
-func (p *Pipeline) AddStage(stage *Stage) {
-	p.Stages = append(p.Stages, stage)
-}
-
-// SetAssembler sets the assembler for a pipeline.
-func (p *Pipeline) SetAssembler(assembler *Assembler) {
-	p.Assembler = assembler
-}
diff --git a/internal/osbuild1/ostree_commit_assembler.go b/internal/osbuild1/ostree_commit_assembler.go
deleted file mode 100644
index c54ab4729..000000000
--- a/internal/osbuild1/ostree_commit_assembler.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package osbuild1
-
-// OSTreeCommitAssemblerOptions desrcibe how to assemble a tree into an OSTree commit.
-type OSTreeCommitAssemblerOptions struct {
-	Ref    string                          `json:"ref"`
-	Parent string                          `json:"parent,omitempty"`
-	Tar    OSTreeCommitAssemblerTarOptions `json:"tar"`
-}
-
-// OSTreeCommitAssemblerTarOptions desrcibes the output tarball
-type OSTreeCommitAssemblerTarOptions struct {
-	Filename string `json:"filename"`
-}
-
-func (OSTreeCommitAssemblerOptions) isAssemblerOptions() {}
-
-// NewOSTreeCommitAssembler creates a new OSTree Commit Assembler object.
-func NewOSTreeCommitAssembler(options *OSTreeCommitAssemblerOptions) *Assembler {
-	return &Assembler{
-		Name:    "org.osbuild.ostree.commit",
-		Options: options,
-	}
-}
-
-type OSTreeCommitStageMetadata struct {
-	Compose OSTreeCommitStageMetadataCompose `json:"compose"`
-}
-
-type OSTreeCommitStageMetadataCompose struct {
-	Ref                       string `json:"ref"`
-	OSTreeNMetadataTotal      int    `json:"ostree-n-metadata-total"`
-	OSTreeNMetadataWritten    int    `json:"ostree-n-metadata-written"`
-	OSTreeNContentTotal       int    `json:"ostree-n-content-total"`
-	OSTreeNContentWritten     int    `json:"ostree-n-content-written"`
-	OSTreeNCacheHits          int    `json:"ostree-n-cache-hits"`
-	OSTreeContentBytesWritten int    `json:"ostree-content-bytes-written"`
-	OSTreeCommit              string `json:"ostree-commit"`
-	OSTreeContentChecksum     string `json:"ostree-content-checksum"`
-	OSTreeTimestamp           string `json:"ostree-timestamp"`
-	RPMOSTreeInputHash        string `json:"rpm-ostree-inputhash"`
-}
-
-func (OSTreeCommitStageMetadata) isStageMetadata() {}
diff --git a/internal/osbuild1/qemu_assembler.go b/internal/osbuild1/qemu_assembler.go
deleted file mode 100644
index c91ef0866..000000000
--- a/internal/osbuild1/qemu_assembler.go
+++ /dev/null
@@ -1,108 +0,0 @@
-package osbuild1
-
-import "github.com/osbuild/osbuild-composer/internal/disk"
-
-type VMDKSubformat string
-
-const (
-	VMDKSubformatMonolithicSparse     VMDKSubformat = "monolithicSparse"
-	VMDKSubformatMonolithicFlat       VMDKSubformat = "monolithicFlat"
-	VMDKSubformatTwoGbMaxExtentSparse VMDKSubformat = "twoGbMaxExtentSparse"
-	VMDKSubformatTwoGbMaxExtentFlat   VMDKSubformat = "twoGbMaxExtentFlat"
-	VMDKSubformatStreamOptimized      VMDKSubformat = "streamOptimized"
-)
-
-// QEMUAssemblerOptions desrcibe how to assemble a tree into an image using qemu.
-//
-// The assembler creates an image of the given size, adds a GRUB2 bootloader
-// and if necessary and a partition table to it with the given PTUUID
-// containing the indicated partitions. Finally, the image is converted into
-// the target format and stored with the given filename.
-type QEMUAssemblerOptions struct {
-	Bootloader    *QEMUBootloader `json:"bootloader,omitempty"`
-	Format        string          `json:"format"`
-	Qcow2Compat   string          `json:"qcow2_compat,omitempty"`
-	VMDKSubformat VMDKSubformat   `json:"vmdk_subformat,omitempty"`
-	Filename      string          `json:"filename"`
-	Size          uint64          `json:"size"`
-	PTUUID        string          `json:"ptuuid"`
-	PTType        string          `json:"pttype"`
-	Partitions    []QEMUPartition `json:"partitions"`
-}
-
-type QEMUPartition struct {
-	Start      uint64          `json:"start"`
-	Size       uint64          `json:"size,omitempty"`
-	Type       string          `json:"type,omitempty"`
-	Bootable   bool            `json:"bootable,omitempty"`
-	UUID       string          `json:"uuid,omitempty"`
-	Filesystem *QEMUFilesystem `json:"filesystem,omitempty"`
-}
-
-type QEMUFilesystem struct {
-	Type       string `json:"type"`
-	UUID       string `json:"uuid"`
-	Label      string `json:"label,omitempty"`
-	Mountpoint string `json:"mountpoint"`
-}
-
-type QEMUBootloader struct {
-	Type     string `json:"type,omitempty"`
-	Platform string `json:"platform,omitempty"`
-}
-
-func (QEMUAssemblerOptions) isAssemblerOptions() {}
-
-// NewQEMUAssembler creates a new QEMU Assembler object.
-func NewQEMUAssembler(options *QEMUAssemblerOptions) *Assembler {
-	return &Assembler{
-		Name:    "org.osbuild.qemu",
-		Options: options,
-	}
-}
-
-// NewQEMUAssemblerOptions creates and returns QEMUAssemblerOptions based on
-// the given PartitionTable.
-func NewQEMUAssemblerOptions(pt *disk.PartitionTable) QEMUAssemblerOptions {
-	var partitions []QEMUPartition
-	for idx := range pt.Partitions {
-		partitions = append(partitions, NewQEMUPartition(&pt.Partitions[idx]))
-	}
-
-	return QEMUAssemblerOptions{
-		Size:       pt.Size,
-		PTUUID:     pt.UUID,
-		PTType:     pt.Type,
-		Partitions: partitions,
-	}
-}
-
-// NewQEMUPartition creates and returns a QEMUPartition based on the given
-// Partition.
-func NewQEMUPartition(p *disk.Partition) QEMUPartition {
-	var fs *QEMUFilesystem
-	if p.Payload != nil {
-		// NOTE: Partition Payload for QEMU assembler should always be a Filesystem
-		f := NewQEMUFilesystem(p.Payload.(*disk.Filesystem))
-		fs = &f
-	}
-	return QEMUPartition{
-		Start:      p.Start,
-		Size:       p.Size,
-		Type:       p.Type,
-		Bootable:   p.Bootable,
-		UUID:       p.UUID,
-		Filesystem: fs,
-	}
-}
-
-// NewQEMUFilesystem creates and returns a QEMUFilesystem based on the given
-// Filesystem.
-func NewQEMUFilesystem(fs *disk.Filesystem) QEMUFilesystem {
-	return QEMUFilesystem{
-		Type:       fs.Type,
-		UUID:       fs.UUID,
-		Label:      fs.Label,
-		Mountpoint: fs.Mountpoint,
-	}
-}
diff --git a/internal/osbuild1/rawfs_assembler.go b/internal/osbuild1/rawfs_assembler.go
deleted file mode 100644
index af7832c86..000000000
--- a/internal/osbuild1/rawfs_assembler.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package osbuild1
-
-import "github.com/google/uuid"
-
-// RawFSAssemblerOptions desrcibe how to assemble a tree into a raw filesystem
-// image.
-type RawFSAssemblerOptions struct {
-	Filename           string    `json:"filename"`
-	RootFilesystemUUID uuid.UUID `json:"root_fs_uuid"`
-	Size               uint64    `json:"size"`
-	FilesystemType     string    `json:"fs_type,omitempty"`
-}
-
-func (RawFSAssemblerOptions) isAssemblerOptions() {}
-
-// NewRawFSAssembler creates a new RawFS Assembler object.
-func NewRawFSAssembler(options *RawFSAssemblerOptions) *Assembler {
-	return &Assembler{
-		Name:    "org.osbuild.rawfs",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/resolv_conf_stage.go b/internal/osbuild1/resolv_conf_stage.go
deleted file mode 100644
index 41a4c8591..000000000
--- a/internal/osbuild1/resolv_conf_stage.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package osbuild1
-
-type ResolvConfStageOptions struct {
-	Nameserver []string `json:"nameserver,omitempty"`
-	Search     []string `json:"search,omitempty"`
-}
-
-func (ResolvConfStageOptions) isStageOptions() {}
-
-func NewResolvConfStage(options *ResolvConfStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.resolv-conf",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/result.go b/internal/osbuild1/result.go
deleted file mode 100644
index c07961167..000000000
--- a/internal/osbuild1/result.go
+++ /dev/null
@@ -1,130 +0,0 @@
-package osbuild1
-
-import (
-	"encoding/json"
-	"fmt"
-	"io"
-	"strings"
-)
-
-type StageResult struct {
-	Name     string          `json:"name"`
-	Options  json.RawMessage `json:"options"`
-	Success  bool            `json:"success"`
-	Output   string          `json:"output"`
-	Metadata StageMetadata   `json:"metadata"`
-}
-
-// StageMetadata specify the metadata of a given stage-type.
-type StageMetadata interface {
-	isStageMetadata()
-}
-
-type RawStageMetadata json.RawMessage
-
-func (RawStageMetadata) isStageMetadata() {}
-
-type rawStageResult struct {
-	Name     string          `json:"name"`
-	Options  json.RawMessage `json:"options"`
-	Success  bool            `json:"success"`
-	Output   string          `json:"output"`
-	Metadata json.RawMessage `json:"metadata"`
-}
-
-type buildResult struct {
-	Stages  []StageResult `json:"stages"`
-	TreeID  string        `json:"tree_id"`
-	Success bool          `json:"success"`
-}
-
-type Result struct {
-	TreeID    string        `json:"tree_id"`
-	OutputID  string        `json:"output_id"`
-	Build     *buildResult  `json:"build"`
-	Stages    []StageResult `json:"stages"`
-	Assembler *StageResult  `json:"assembler"`
-	Success   bool          `json:"success"`
-}
-
-func (result *StageResult) UnmarshalJSON(data []byte) error {
-	var rawStageResult rawStageResult
-	err := json.Unmarshal(data, &rawStageResult)
-	if err != nil {
-		return err
-	}
-	var metadata StageMetadata
-	switch {
-	case strings.HasSuffix(rawStageResult.Name, "org.osbuild.rpm"):
-		metadata = new(RPMStageMetadata)
-		err = json.Unmarshal(rawStageResult.Metadata, metadata)
-		if err != nil {
-			return err
-		}
-	case strings.HasSuffix(rawStageResult.Name, "org.osbuild.ostree.commit"):
-		metadata = new(OSTreeCommitStageMetadata)
-		err = json.Unmarshal(rawStageResult.Metadata, metadata)
-		if err != nil {
-			return err
-		}
-	default:
-		metadata = RawStageMetadata(rawStageResult.Metadata)
-	}
-
-	result.Name = rawStageResult.Name
-	result.Options = rawStageResult.Options
-	result.Success = rawStageResult.Success
-	result.Output = rawStageResult.Output
-	result.Metadata = metadata
-
-	return nil
-}
-
-func (cr *Result) Write(writer io.Writer) error {
-	if cr == nil || (cr.Build == nil && len(cr.Stages) == 0 && cr.Assembler == nil) {
-		fmt.Fprintf(writer, "The compose result is empty.\n")
-		return nil
-	}
-
-	if cr.Build != nil {
-		fmt.Fprintf(writer, "Build pipeline:\n")
-
-		for _, stage := range cr.Build.Stages {
-			fmt.Fprintf(writer, "Stage %s\n", stage.Name)
-			enc := json.NewEncoder(writer)
-			enc.SetIndent("", "  ")
-			err := enc.Encode(stage.Options)
-			if err != nil {
-				return err
-			}
-			fmt.Fprintf(writer, "\nOutput:\n%s\n", stage.Output)
-		}
-	}
-
-	if len(cr.Stages) > 0 {
-		fmt.Fprintf(writer, "Stages:\n")
-		for _, stage := range cr.Stages {
-			fmt.Fprintf(writer, "Stage: %s\n", stage.Name)
-			enc := json.NewEncoder(writer)
-			enc.SetIndent("", "  ")
-			err := enc.Encode(stage.Options)
-			if err != nil {
-				return err
-			}
-			fmt.Fprintf(writer, "\nOutput:\n%s\n", stage.Output)
-		}
-	}
-
-	if cr.Assembler != nil {
-		fmt.Fprintf(writer, "Assembler %s:\n", cr.Assembler.Name)
-		enc := json.NewEncoder(writer)
-		enc.SetIndent("", "  ")
-		err := enc.Encode(cr.Assembler.Options)
-		if err != nil {
-			return err
-		}
-		fmt.Fprintf(writer, "\nOutput:\n%s\n", cr.Assembler.Output)
-	}
-
-	return nil
-}
diff --git a/internal/osbuild1/rhsm_stage.go b/internal/osbuild1/rhsm_stage.go
deleted file mode 100644
index a0bb40f05..000000000
--- a/internal/osbuild1/rhsm_stage.go
+++ /dev/null
@@ -1,34 +0,0 @@
-package osbuild1
-
-// RHSMStageOptions describes configuration of the RHSM stage.
-//
-// The RHSM stage allows configuration of Red Hat Subscription Manager (RHSM)
-// related components. Currently it allows only configuration of the enablement
-// state of DNF plugins used by the Subscription Manager.
-type RHSMStageOptions struct {
-	DnfPlugins *RHSMStageOptionsDnfPlugins `json:"dnf-plugins,omitempty"`
-}
-
-func (RHSMStageOptions) isStageOptions() {}
-
-// RHSMStageOptionsDnfPlugins describes configuration of all RHSM DNF plugins
-type RHSMStageOptionsDnfPlugins struct {
-	ProductID           *RHSMStageOptionsDnfPlugin `json:"product-id,omitempty"`
-	SubscriptionManager *RHSMStageOptionsDnfPlugin `json:"subscription-manager,omitempty"`
-}
-
-// RHSMStageOptionsDnfPlugin describes configuration of a specific RHSM DNF
-// plugin
-//
-// Only the enablement state of a DNF plugin can be currenlty  set.
-type RHSMStageOptionsDnfPlugin struct {
-	Enabled bool `json:"enabled"`
-}
-
-// NewRHSMStage creates a new RHSM stage
-func NewRHSMStage(options *RHSMStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.rhsm",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/rpm_ostree_stage.go b/internal/osbuild1/rpm_ostree_stage.go
deleted file mode 100644
index c20726d61..000000000
--- a/internal/osbuild1/rpm_ostree_stage.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package osbuild1
-
-// RPMOSTreeStageOptions configures the invocation of the `rpm-ostree`
-// process for generating an ostree commit.
-type RPMOSTreeStageOptions struct {
-	EtcGroupMembers []string `json:"etc_group_members,omitempty"`
-}
-
-func (RPMOSTreeStageOptions) isStageOptions() {}
-
-// NewRPMOSTreeStage creates a new rpm-ostree Stage object.
-func NewRPMOSTreeStage(options *RPMOSTreeStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.rpm-ostree",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/rpm_stage.go b/internal/osbuild1/rpm_stage.go
deleted file mode 100644
index f52c9d8ae..000000000
--- a/internal/osbuild1/rpm_stage.go
+++ /dev/null
@@ -1,49 +0,0 @@
-package osbuild1
-
-// The RPMStageOptions describe the operations of the RPM stage.
-//
-// The RPM stage installs a given set of packages, identified by their
-// content hash. This ensures that given a set of RPM stage options,
-// the output is be reproducible, if the underlying tools are.
-type RPMStageOptions struct {
-	GPGKeys  []string     `json:"gpgkeys,omitempty"`
-	Packages []RPMPackage `json:"packages"`
-}
-
-// RPMPackage represents one RPM, as referenced by its content hash
-// (checksum). The files source must indicate where to fetch the given
-// RPM. If CheckGPG is `true` the RPM must be signed with one of the
-// GPGKeys given in the RPMStageOptions.
-type RPMPackage struct {
-	Checksum string `json:"checksum"`
-	CheckGPG bool   `json:"check_gpg,omitempty"`
-}
-
-func (RPMStageOptions) isStageOptions() {}
-
-// NewRPMStage creates a new RPM stage.
-func NewRPMStage(options *RPMStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.rpm",
-		Options: options,
-	}
-}
-
-// RPMStageMetadata gives the set of packages installed by the RPM stage
-type RPMStageMetadata struct {
-	Packages []RPMPackageMetadata `json:"packages"`
-}
-
-// RPMPackageMetadata contains the metadata extracted from one RPM header
-type RPMPackageMetadata struct {
-	Name    string  `json:"name"`
-	Version string  `json:"version"`
-	Release string  `json:"release"`
-	Epoch   *string `json:"epoch"`
-	Arch    string  `json:"arch"`
-	SigMD5  string  `json:"sigmd5"`
-	SigPGP  string  `json:"sigpgp"`
-	SigGPG  string  `json:"siggpg"`
-}
-
-func (RPMStageMetadata) isStageMetadata() {}
diff --git a/internal/osbuild1/script_stage.go b/internal/osbuild1/script_stage.go
deleted file mode 100644
index 30274caa5..000000000
--- a/internal/osbuild1/script_stage.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package osbuild1
-
-// The ScriptStageOptions specifies a custom script to run in the image
-type ScriptStageOptions struct {
-	Script string `json:"script"`
-}
-
-func (ScriptStageOptions) isStageOptions() {}
-
-// NewScriptStageOptions creates a new script stage options object, with
-// the mandatory fields set.
-func NewScriptStageOptions(script string) *ScriptStageOptions {
-	return &ScriptStageOptions{
-		Script: script,
-	}
-}
-
-// NewScriptStage creates a new Script Stage object.
-func NewScriptStage(options *ScriptStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.script",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/selinux_stage.go b/internal/osbuild1/selinux_stage.go
deleted file mode 100644
index c231eb993..000000000
--- a/internal/osbuild1/selinux_stage.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package osbuild1
-
-// The SELinuxStageOptions describe how to apply selinux labels.
-//
-// A file contexts configuration file is sepcified that describes
-// the filesystem labels to apply to the image.
-type SELinuxStageOptions struct {
-	FileContexts string            `json:"file_contexts"`
-	Labels       map[string]string `json:"labels,omitempty"`
-}
-
-func (SELinuxStageOptions) isStageOptions() {}
-
-// NewSELinuxStageOptions creates a new SELinuxStaeOptions object, with
-// the mandatory fields set.
-func NewSELinuxStageOptions(fileContexts string) *SELinuxStageOptions {
-	return &SELinuxStageOptions{
-		FileContexts: fileContexts,
-	}
-}
-
-// NewSELinuxStage creates a new SELinux Stage object.
-func NewSELinuxStage(options *SELinuxStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.selinux",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/source.go b/internal/osbuild1/source.go
deleted file mode 100644
index 0dcc38ab8..000000000
--- a/internal/osbuild1/source.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package osbuild1
-
-import (
-	"encoding/json"
-	"errors"
-)
-
-// A Sources map contains all the sources made available to an osbuild run
-type Sources map[string]Source
-
-// Source specifies the operations of a given source-type.
-type Source interface {
-	isSource()
-}
-
-type rawSources map[string]json.RawMessage
-
-// UnmarshalJSON unmarshals JSON into a Source object. Each type of source has
-// a custom unmarshaller for its options, selected based on the source name.
-func (sources *Sources) UnmarshalJSON(data []byte) error {
-	var rawSources rawSources
-	err := json.Unmarshal(data, &rawSources)
-	if err != nil {
-		return err
-	}
-	*sources = make(map[string]Source)
-	for name, rawSource := range rawSources {
-		var source Source
-		switch name {
-		case "org.osbuild.files":
-			source = new(FilesSource)
-		default:
-			return errors.New("unexpected source name: " + name)
-		}
-		err = json.Unmarshal(rawSource, source)
-		if err != nil {
-			return err
-		}
-		(*sources)[name] = source
-	}
-
-	return nil
-}
diff --git a/internal/osbuild1/stage.go b/internal/osbuild1/stage.go
deleted file mode 100644
index 32b0fd120..000000000
--- a/internal/osbuild1/stage.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-// A Stage transforms a filesystem tree.
-type Stage struct {
-	// Well-known name in reverse domain-name notation, uniquely identifying
-	// the stage type.
-	Name string `json:"name"`
-	// Stage-type specific options fully determining the operations of the
-	// stage.
-	Options StageOptions `json:"options"`
-}
-
-// StageOptions specify the operations of a given stage-type.
-type StageOptions interface {
-	isStageOptions()
-}
diff --git a/internal/osbuild1/sysconfig_stage.go b/internal/osbuild1/sysconfig_stage.go
deleted file mode 100644
index f427b82e3..000000000
--- a/internal/osbuild1/sysconfig_stage.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package osbuild1
-
-type SysconfigStageOptions struct {
-	Kernel  SysconfigKernelOptions  `json:"kernel,omitempty"`
-	Network SysconfigNetworkOptions `json:"network,omitempty"`
-}
-
-type SysconfigNetworkOptions struct {
-	Networking bool `json:"networking,omitempty"`
-	NoZeroConf bool `json:"no_zero_conf,omitempty"`
-}
-
-type SysconfigKernelOptions struct {
-	UpdateDefault bool   `json:"update_default,omitempty"`
-	DefaultKernel string `json:"default_kernel,omitempty"`
-}
-
-func (SysconfigStageOptions) isStageOptions() {}
-
-func NewSysconfigStage(options *SysconfigStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.sysconfig",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/systemd_stage.go b/internal/osbuild1/systemd_stage.go
deleted file mode 100644
index 8b29a6546..000000000
--- a/internal/osbuild1/systemd_stage.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-type SystemdStageOptions struct {
-	EnabledServices  []string `json:"enabled_services,omitempty"`
-	DisabledServices []string `json:"disabled_services,omitempty"`
-	DefaultTarget    string   `json:"default_target,omitempty"`
-}
-
-func (SystemdStageOptions) isStageOptions() {}
-
-func NewSystemdStage(options *SystemdStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.systemd",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/tar_assembler.go b/internal/osbuild1/tar_assembler.go
deleted file mode 100644
index a6f8a421e..000000000
--- a/internal/osbuild1/tar_assembler.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package osbuild1
-
-// TarAssemblerOptions desrcibe how to assemble a tree into a tar ball.
-//
-// The assembler tars and optionally compresses the tree using the provided
-// compression type, and stores the output with the given filename.
-type TarAssemblerOptions struct {
-	Filename    string `json:"filename"`
-	Compression string `json:"compression,omitempty"`
-}
-
-func (TarAssemblerOptions) isAssemblerOptions() {}
-
-// NewTarAssembler creates a new Tar Assembler object.
-func NewTarAssembler(options *TarAssemblerOptions) *Assembler {
-	return &Assembler{
-		Name:    "org.osbuild.tar",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/timezone_stage.go b/internal/osbuild1/timezone_stage.go
deleted file mode 100644
index ba7c52811..000000000
--- a/internal/osbuild1/timezone_stage.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package osbuild1
-
-type TimezoneStageOptions struct {
-	Zone string `json:"zone"`
-}
-
-func (TimezoneStageOptions) isStageOptions() {}
-
-func NewTimezoneStage(options *TimezoneStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.timezone",
-		Options: options,
-	}
-}
diff --git a/internal/osbuild1/users_stage.go b/internal/osbuild1/users_stage.go
deleted file mode 100644
index 1288bcf3f..000000000
--- a/internal/osbuild1/users_stage.go
+++ /dev/null
@@ -1,62 +0,0 @@
-package osbuild1
-
-import (
-	"github.com/osbuild/osbuild-composer/internal/blueprint"
-	"github.com/osbuild/osbuild-composer/internal/crypt"
-)
-
-type UsersStageOptions struct {
-	Users map[string]UsersStageOptionsUser `json:"users"`
-}
-
-func (UsersStageOptions) isStageOptions() {}
-
-type UsersStageOptionsUser struct {
-	UID         *int     `json:"uid,omitempty"`
-	GID         *int     `json:"gid,omitempty"`
-	Groups      []string `json:"groups,omitempty"`
-	Description *string  `json:"description,omitempty"`
-	Home        *string  `json:"home,omitempty"`
-	Shell       *string  `json:"shell,omitempty"`
-	Password    *string  `json:"password,omitempty"`
-	Key         *string  `json:"key,omitempty"`
-}
-
-func NewUsersStage(options *UsersStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.users",
-		Options: options,
-	}
-}
-
-func NewUsersStageOptions(userCustomizations []blueprint.UserCustomization) (*UsersStageOptions, error) {
-	if len(userCustomizations) == 0 {
-		return nil, nil
-	}
-
-	users := make(map[string]UsersStageOptionsUser, len(userCustomizations))
-	for _, uc := range userCustomizations {
-		if uc.Password != nil && !crypt.PasswordIsCrypted(*uc.Password) {
-			cryptedPassword, err := crypt.CryptSHA512(*uc.Password)
-			if err != nil {
-				return nil, err
-			}
-
-			uc.Password = &cryptedPassword
-		}
-
-		user := UsersStageOptionsUser{
-			UID:         uc.UID,
-			GID:         uc.GID,
-			Groups:      uc.Groups,
-			Description: uc.Description,
-			Home:        uc.Home,
-			Shell:       uc.Shell,
-			Password:    uc.Password,
-			Key:         uc.Key,
-		}
-		users[uc.Name] = user
-	}
-
-	return &UsersStageOptions{Users: users}, nil
-}
diff --git a/internal/osbuild1/zipl_stage.go b/internal/osbuild1/zipl_stage.go
deleted file mode 100644
index e7cc2bfdf..000000000
--- a/internal/osbuild1/zipl_stage.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package osbuild1
-
-// The ZiplStageOptions describe how to create zipl stage
-//
-// The only configuration option available is a boot timeout and it is optional
-type ZiplStageOptions struct {
-	Timeout int `json:"timeout,omitempty"`
-}
-
-func (ZiplStageOptions) isStageOptions() {}
-
-// NewZiplStageOptions creates a new ZiplStageOptions object with no timeout
-func NewZiplStageOptions() *ZiplStageOptions {
-	return &ZiplStageOptions{
-		Timeout: 0,
-	}
-}
-
-// NewZiplStage creates a new zipl Stage object.
-func NewZiplStage(options *ZiplStageOptions) *Stage {
-	return &Stage{
-		Name:    "org.osbuild.zipl",
-		Options: options,
-	}
-}
diff --git a/internal/weldr/api.go b/internal/weldr/api.go
index d6fa68d8b..36d8d0de0 100644
--- a/internal/weldr/api.go
+++ b/internal/weldr/api.go
@@ -35,7 +35,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/distro"
 	"github.com/osbuild/osbuild-composer/internal/distroregistry"
 	"github.com/osbuild/osbuild-composer/internal/dnfjson"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/ostree"
 	"github.com/osbuild/osbuild-composer/internal/reporegistry"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
diff --git a/internal/worker/json.go b/internal/worker/json.go
index a0fd3d1af..1889ac742 100644
--- a/internal/worker/json.go
+++ b/internal/worker/json.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/osbuild/osbuild-composer/internal/target"
 	"github.com/osbuild/osbuild-composer/internal/worker/clienterrors"


Test patch:
diff --git a/internal/cloudapi/v2/v2_koji_test.go b/internal/cloudapi/v2/v2_koji_test.go
index 92117c812..076f65aab 100644
--- a/internal/cloudapi/v2/v2_koji_test.go
+++ b/internal/cloudapi/v2/v2_koji_test.go
@@ -15,8 +15,7 @@ import (
 	v2 "github.com/osbuild/osbuild-composer/internal/cloudapi/v2"
 	"github.com/osbuild/osbuild-composer/internal/distro/test_distro"
 	"github.com/osbuild/osbuild-composer/internal/kojiapi/api"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/target"
 	"github.com/osbuild/osbuild-composer/internal/test"
 	"github.com/osbuild/osbuild-composer/internal/worker"
@@ -533,7 +532,7 @@ func TestKojiCompose(t *testing.T) {
 			test.TestRoute(t, handler, false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v", finalizeID), ``, http.StatusOK, c.composeStatus, `href`, `id`)
 
 			// get the manifests
-			test.TestRoute(t, handler, false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v/manifests", finalizeID), ``, http.StatusOK, `{"manifests":[{"pipeline":{},"sources":{}},{"pipeline":{},"sources":{}}],"kind":"ComposeManifests"}`, `href`, `id`)
+			test.TestRoute(t, handler, false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v/manifests", finalizeID), ``, http.StatusOK, `{"manifests":[{"version":"","pipelines":[],"sources":{}},{"version":"","pipelines":[],"sources":{}}],"kind":"ComposeManifests"}`, `href`, `id`)
 
 			// get the logs
 			test.TestRoute(t, handler, false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v/logs", finalizeID), ``, http.StatusOK, `{"kind":"ComposeLogs"}`, `koji`, `image_builds`, `href`, `id`)
@@ -589,7 +588,7 @@ func TestKojiJobTypeValidation(t *testing.T) {
 	initID, err := workers.EnqueueKojiInit(&initJob, "")
 	require.NoError(t, err)
 
-	manifest, err := json.Marshal(osbuild2.Manifest{})
+	manifest, err := json.Marshal(osbuild.Manifest{})
 	require.NoErrorf(t, err, "error marshalling empty Manifest to JSON")
 
 	buildJobs := make([]worker.OSBuildJob, nImages)
diff --git a/internal/cloudapi/v2/v2_test.go b/internal/cloudapi/v2/v2_test.go
index 00a7143ec..531ae49b9 100644
--- a/internal/cloudapi/v2/v2_test.go
+++ b/internal/cloudapi/v2/v2_test.go
@@ -15,7 +15,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/distro/test_distro"
 	"github.com/osbuild/osbuild-composer/internal/jobqueue/fsjobqueue"
 	distro_mock "github.com/osbuild/osbuild-composer/internal/mocks/distro"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/ostree/mock_ostree_repo"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/osbuild/osbuild-composer/internal/test"
@@ -593,7 +593,7 @@ func TestComposeStatusSuccess(t *testing.T) {
 
 	res, err := json.Marshal(&worker.OSBuildJobResult{
 		Success:       true,
-		OSBuildOutput: &osbuild2.Result{Success: true},
+		OSBuildOutput: &osbuild.Result{Success: true},
 	})
 	require.NoError(t, err)
 
@@ -654,7 +654,8 @@ func TestComposeStatusSuccess(t *testing.T) {
 		"kind": "ComposeManifests",
 		"manifests": [
 			{
-				"pipeline": {},
+				"version": "",
+				"pipelines": [],
 				"sources": {}
 			}
 		]
diff --git a/internal/distro/image_config_test.go b/internal/distro/image_config_test.go
index 861918a56..bb89f75a6 100644
--- a/internal/distro/image_config_test.go
+++ b/internal/distro/image_config_test.go
@@ -4,7 +4,7 @@ import (
 	"testing"
 
 	"github.com/osbuild/osbuild-composer/internal/common"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/stretchr/testify/assert"
 )
 
@@ -19,33 +19,33 @@ func TestImageConfigInheritFrom(t *testing.T) {
 			name: "inheritance with overridden values",
 			distroConfig: &ImageConfig{
 				Timezone: "America/New_York",
-				TimeSynchronization: &osbuild2.ChronyStageOptions{
+				TimeSynchronization: &osbuild.ChronyStageOptions{
 					Timeservers: []string{"127.0.0.1"},
 				},
 				Locale: "en_US.UTF-8",
-				Keyboard: &osbuild2.KeymapStageOptions{
+				Keyboard: &osbuild.KeymapStageOptions{
 					Keymap: "us",
 				},
 				EnabledServices:  []string{"sshd"},
 				DisabledServices: []string{"named"},
 				DefaultTarget:    "multi-user.target",
-				Sysconfig: []*osbuild2.SysconfigStageOptions{
+				Sysconfig: []*osbuild.SysconfigStageOptions{
 					{
-						Kernel: &osbuild2.SysconfigKernelOptions{
+						Kernel: &osbuild.SysconfigKernelOptions{
 							UpdateDefault: true,
 							DefaultKernel: "kernel",
 						},
-						Network: &osbuild2.SysconfigNetworkOptions{
+						Network: &osbuild.SysconfigNetworkOptions{
 							Networking: true,
 							NoZeroConf: true,
 						},
-						NetworkScripts: &osbuild2.NetworkScriptsOptions{
-							IfcfgFiles: map[string]osbuild2.IfcfgFile{
+						NetworkScripts: &osbuild.NetworkScriptsOptions{
+							IfcfgFiles: map[string]osbuild.IfcfgFile{
 								"eth0": {
 									Device:    "eth0",
-									Bootproto: osbuild2.IfcfgBootprotoDHCP,
+									Bootproto: osbuild.IfcfgBootprotoDHCP,
 									OnBoot:    common.BoolToPtr(true),
-									Type:      osbuild2.IfcfgTypeEthernet,
+									Type:      osbuild.IfcfgTypeEthernet,
 									UserCtl:   common.BoolToPtr(true),
 									PeerDNS:   common.BoolToPtr(true),
 									IPv6Init:  common.BoolToPtr(false),
@@ -57,8 +57,8 @@ func TestImageConfigInheritFrom(t *testing.T) {
 			},
 			imageConfig: &ImageConfig{
 				Timezone: "UTC",
-				TimeSynchronization: &osbuild2.ChronyStageOptions{
-					Servers: []osbuild2.ChronyConfigServer{
+				TimeSynchronization: &osbuild.ChronyStageOptions{
+					Servers: []osbuild.ChronyConfigServer{
 						{
 							Hostname: "169.254.169.123",
 							Prefer:   common.BoolToPtr(true),
@@ -72,8 +72,8 @@ func TestImageConfigInheritFrom(t *testing.T) {
 			},
 			expectedConfig: &ImageConfig{
 				Timezone: "UTC",
-				TimeSynchronization: &osbuild2.ChronyStageOptions{
-					Servers: []osbuild2.ChronyConfigServer{
+				TimeSynchronization: &osbuild.ChronyStageOptions{
+					Servers: []osbuild.ChronyConfigServer{
 						{
 							Hostname: "169.254.169.123",
 							Prefer:   common.BoolToPtr(true),
@@ -85,29 +85,29 @@ func TestImageConfigInheritFrom(t *testing.T) {
 					LeapsecTz: common.StringToPtr(""),
 				},
 				Locale: "en_US.UTF-8",
-				Keyboard: &osbuild2.KeymapStageOptions{
+				Keyboard: &osbuild.KeymapStageOptions{
 					Keymap: "us",
 				},
 				EnabledServices:  []string{"sshd"},
 				DisabledServices: []string{"named"},
 				DefaultTarget:    "multi-user.target",
-				Sysconfig: []*osbuild2.SysconfigStageOptions{
+				Sysconfig: []*osbuild.SysconfigStageOptions{
 					{
-						Kernel: &osbuild2.SysconfigKernelOptions{
+						Kernel: &osbuild.SysconfigKernelOptions{
 							UpdateDefault: true,
 							DefaultKernel: "kernel",
 						},
-						Network: &osbuild2.SysconfigNetworkOptions{
+						Network: &osbuild.SysconfigNetworkOptions{
 							Networking: true,
 							NoZeroConf: true,
 						},
-						NetworkScripts: &osbuild2.NetworkScriptsOptions{
-							IfcfgFiles: map[string]osbuild2.IfcfgFile{
+						NetworkScripts: &osbuild.NetworkScriptsOptions{
+							IfcfgFiles: map[string]osbuild.IfcfgFile{
 								"eth0": {
 									Device:    "eth0",
-									Bootproto: osbuild2.IfcfgBootprotoDHCP,
+									Bootproto: osbuild.IfcfgBootprotoDHCP,
 									OnBoot:    common.BoolToPtr(true),
-									Type:      osbuild2.IfcfgTypeEthernet,
+									Type:      osbuild.IfcfgTypeEthernet,
 									UserCtl:   common.BoolToPtr(true),
 									PeerDNS:   common.BoolToPtr(true),
 									IPv6Init:  common.BoolToPtr(false),
@@ -122,11 +122,11 @@ func TestImageConfigInheritFrom(t *testing.T) {
 			name: "empty image type configuration",
 			distroConfig: &ImageConfig{
 				Timezone: "America/New_York",
-				TimeSynchronization: &osbuild2.ChronyStageOptions{
+				TimeSynchronization: &osbuild.ChronyStageOptions{
 					Timeservers: []string{"127.0.0.1"},
 				},
 				Locale: "en_US.UTF-8",
-				Keyboard: &osbuild2.KeymapStageOptions{
+				Keyboard: &osbuild.KeymapStageOptions{
 					Keymap: "us",
 				},
 				EnabledServices:  []string{"sshd"},
@@ -136,11 +136,11 @@ func TestImageConfigInheritFrom(t *testing.T) {
 			imageConfig: &ImageConfig{},
 			expectedConfig: &ImageConfig{
 				Timezone: "America/New_York",
-				TimeSynchronization: &osbuild2.ChronyStageOptions{
+				TimeSynchronization: &osbuild.ChronyStageOptions{
 					Timeservers: []string{"127.0.0.1"},
 				},
 				Locale: "en_US.UTF-8",
-				Keyboard: &osbuild2.KeymapStageOptions{
+				Keyboard: &osbuild.KeymapStageOptions{
 					Keymap: "us",
 				},
 				EnabledServices:  []string{"sshd"},
@@ -153,11 +153,11 @@ func TestImageConfigInheritFrom(t *testing.T) {
 			distroConfig: &ImageConfig{},
 			imageConfig: &ImageConfig{
 				Timezone: "America/New_York",
-				TimeSynchronization: &osbuild2.ChronyStageOptions{
+				TimeSynchronization: &osbuild.ChronyStageOptions{
 					Timeservers: []string{"127.0.0.1"},
 				},
 				Locale: "en_US.UTF-8",
-				Keyboard: &osbuild2.KeymapStageOptions{
+				Keyboard: &osbuild.KeymapStageOptions{
 					Keymap: "us",
 				},
 				EnabledServices:  []string{"sshd"},
@@ -166,11 +166,11 @@ func TestImageConfigInheritFrom(t *testing.T) {
 			},
 			expectedConfig: &ImageConfig{
 				Timezone: "America/New_York",
-				TimeSynchronization: &osbuild2.ChronyStageOptions{
+				TimeSynchronization: &osbuild.ChronyStageOptions{
 					Timeservers: []string{"127.0.0.1"},
 				},
 				Locale: "en_US.UTF-8",
-				Keyboard: &osbuild2.KeymapStageOptions{
+				Keyboard: &osbuild.KeymapStageOptions{
 					Keymap: "us",
 				},
 				EnabledServices:  []string{"sshd"},
@@ -183,11 +183,11 @@ func TestImageConfigInheritFrom(t *testing.T) {
 			distroConfig: nil,
 			imageConfig: &ImageConfig{
 				Timezone: "America/New_York",
-				TimeSynchronization: &osbuild2.ChronyStageOptions{
+				TimeSynchronization: &osbuild.ChronyStageOptions{
 					Timeservers: []string{"127.0.0.1"},
 				},
 				Locale: "en_US.UTF-8",
-				Keyboard: &osbuild2.KeymapStageOptions{
+				Keyboard: &osbuild.KeymapStageOptions{
 					Keymap: "us",
 				},
 				EnabledServices:  []string{"sshd"},
@@ -196,11 +196,11 @@ func TestImageConfigInheritFrom(t *testing.T) {
 			},
 			expectedConfig: &ImageConfig{
 				Timezone: "America/New_York",
-				TimeSynchronization: &osbuild2.ChronyStageOptions{
+				TimeSynchronization: &osbuild.ChronyStageOptions{
 					Timeservers: []string{"127.0.0.1"},
 				},
 				Locale: "en_US.UTF-8",
-				Keyboard: &osbuild2.KeymapStageOptions{
+				Keyboard: &osbuild.KeymapStageOptions{
 					Keymap: "us",
 				},
 				EnabledServices:  []string{"sshd"},
diff --git a/internal/distro/test_distro/distro.go b/internal/distro/test_distro/distro.go
index 5861c6b23..1d97ecdb7 100644
--- a/internal/distro/test_distro/distro.go
+++ b/internal/distro/test_distro/distro.go
@@ -8,7 +8,7 @@ import (
 
 	"github.com/osbuild/osbuild-composer/internal/blueprint"
 	"github.com/osbuild/osbuild-composer/internal/distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild1"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 )
 
@@ -249,8 +249,8 @@ func (t *TestImageType) Manifest(b *blueprint.Customizations, options distro.Ima
 
 	return json.Marshal(
 		osbuild.Manifest{
-			Sources:  osbuild.Sources{},
-			Pipeline: osbuild.Pipeline{},
+			Sources:   osbuild.Sources{},
+			Pipelines: []osbuild.Pipeline{},
 		},
 	)
 }
diff --git a/internal/kojiapi/server_test.go b/internal/kojiapi/server_test.go
index 2dda92012..bcf1b03aa 100644
--- a/internal/kojiapi/server_test.go
+++ b/internal/kojiapi/server_test.go
@@ -22,7 +22,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/kojiapi/api"
 	distro_mock "github.com/osbuild/osbuild-composer/internal/mocks/distro"
 	rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/test"
 	"github.com/osbuild/osbuild-composer/internal/worker"
 	"github.com/osbuild/osbuild-composer/internal/worker/clienterrors"
@@ -467,7 +467,7 @@ func TestCompose(t *testing.T) {
 
 		test.TestRoute(t, handler, false, "GET", fmt.Sprintf("/api/composer-koji/v1/compose/%v", finalizeID), ``, http.StatusOK, c.composeStatus)
 
-		test.TestRoute(t, handler, false, "GET", fmt.Sprintf("/api/composer-koji/v1/compose/%v/manifests", finalizeID), ``, http.StatusOK, `[{"pipeline": {}, "sources": {}}, {"pipeline": {}, "sources": {}}]`)
+		test.TestRoute(t, handler, false, "GET", fmt.Sprintf("/api/composer-koji/v1/compose/%v/manifests", finalizeID), ``, http.StatusOK, `[{"version": "", "pipelines": [], "sources": {}}, {"version": "", "pipelines": [], "sources": {}}]`)
 	}
 }
 
diff --git a/internal/osbuild2/authconfig_stage_test.go b/internal/osbuild/authconfig_stage_test.go
similarity index 94%
rename from internal/osbuild2/authconfig_stage_test.go
rename to internal/osbuild/authconfig_stage_test.go
index c069e545f..19e04ca62 100644
--- a/internal/osbuild2/authconfig_stage_test.go
+++ b/internal/osbuild/authconfig_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/authselect_stage_test.go b/internal/osbuild/authselect_stage_test.go
similarity index 94%
rename from internal/osbuild2/authselect_stage_test.go
rename to internal/osbuild/authselect_stage_test.go
index 7e954fc85..6ef84ad9b 100644
--- a/internal/osbuild2/authselect_stage_test.go
+++ b/internal/osbuild/authselect_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/chrony_stage_test.go b/internal/osbuild/chrony_stage_test.go
similarity index 98%
rename from internal/osbuild2/chrony_stage_test.go
rename to internal/osbuild/chrony_stage_test.go
index 2d8e390c0..e0e30755a 100644
--- a/internal/osbuild2/chrony_stage_test.go
+++ b/internal/osbuild/chrony_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/cloud_init_stage_test.go b/internal/osbuild/cloud_init_stage_test.go
similarity index 99%
rename from internal/osbuild2/cloud_init_stage_test.go
rename to internal/osbuild/cloud_init_stage_test.go
index 6eada673b..e4a6abc43 100644
--- a/internal/osbuild2/cloud_init_stage_test.go
+++ b/internal/osbuild/cloud_init_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/common_test.go b/internal/osbuild/common_test.go
similarity index 99%
rename from internal/osbuild2/common_test.go
rename to internal/osbuild/common_test.go
index 75520bc90..30cd7f489 100644
--- a/internal/osbuild2/common_test.go
+++ b/internal/osbuild/common_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import "github.com/osbuild/osbuild-composer/internal/disk"
 
diff --git a/internal/osbuild2/copy_stage_test.go b/internal/osbuild/copy_stage_test.go
similarity index 98%
rename from internal/osbuild2/copy_stage_test.go
rename to internal/osbuild/copy_stage_test.go
index 7c9c9e9a9..0be79ddb2 100644
--- a/internal/osbuild2/copy_stage_test.go
+++ b/internal/osbuild/copy_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/device_test.go b/internal/osbuild/device_test.go
similarity index 99%
rename from internal/osbuild2/device_test.go
rename to internal/osbuild/device_test.go
index 705a53122..ca292ab14 100644
--- a/internal/osbuild2/device_test.go
+++ b/internal/osbuild/device_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"math/rand"
diff --git a/internal/osbuild2/disk_test.go b/internal/osbuild/disk_test.go
similarity index 98%
rename from internal/osbuild2/disk_test.go
rename to internal/osbuild/disk_test.go
index 524210acc..8dd4f657b 100644
--- a/internal/osbuild2/disk_test.go
+++ b/internal/osbuild/disk_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"math/rand"
diff --git a/internal/osbuild2/dnf_automatic_config_stage_test.go b/internal/osbuild/dnf_automatic_config_stage_test.go
similarity index 99%
rename from internal/osbuild2/dnf_automatic_config_stage_test.go
rename to internal/osbuild/dnf_automatic_config_stage_test.go
index af2eb5588..515b15ecd 100644
--- a/internal/osbuild2/dnf_automatic_config_stage_test.go
+++ b/internal/osbuild/dnf_automatic_config_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/dnf_config_stage_test.go b/internal/osbuild/dnf_config_stage_test.go
similarity index 99%
rename from internal/osbuild2/dnf_config_stage_test.go
rename to internal/osbuild/dnf_config_stage_test.go
index cfbe65fc1..798422586 100644
--- a/internal/osbuild2/dnf_config_stage_test.go
+++ b/internal/osbuild/dnf_config_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/dracut_conf_stage_test.go b/internal/osbuild/dracut_conf_stage_test.go
similarity index 98%
rename from internal/osbuild2/dracut_conf_stage_test.go
rename to internal/osbuild/dracut_conf_stage_test.go
index b68b7c326..e83d09e81 100644
--- a/internal/osbuild2/dracut_conf_stage_test.go
+++ b/internal/osbuild/dracut_conf_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/dracut_stage_test.go b/internal/osbuild/dracut_stage_test.go
similarity index 94%
rename from internal/osbuild2/dracut_stage_test.go
rename to internal/osbuild/dracut_stage_test.go
index dc5ac0b14..043bac4a1 100644
--- a/internal/osbuild2/dracut_stage_test.go
+++ b/internal/osbuild/dracut_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/fdo_stage_test.go b/internal/osbuild/fdo_stage_test.go
similarity index 97%
rename from internal/osbuild2/fdo_stage_test.go
rename to internal/osbuild/fdo_stage_test.go
index 352fca21b..c882c4f80 100644
--- a/internal/osbuild2/fdo_stage_test.go
+++ b/internal/osbuild/fdo_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/files_input_test.go b/internal/osbuild/files_input_test.go
similarity index 99%
rename from internal/osbuild2/files_input_test.go
rename to internal/osbuild/files_input_test.go
index ca9898d96..6ec1ec499 100644
--- a/internal/osbuild2/files_input_test.go
+++ b/internal/osbuild/files_input_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"bytes"
diff --git a/internal/osbuild2/firewall_stage_test.go b/internal/osbuild/firewall_stage_test.go
similarity index 94%
rename from internal/osbuild2/firewall_stage_test.go
rename to internal/osbuild/firewall_stage_test.go
index 24d2c0d39..89fa2776c 100644
--- a/internal/osbuild2/firewall_stage_test.go
+++ b/internal/osbuild/firewall_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/first_boot_stage_test.go b/internal/osbuild/first_boot_stage_test.go
similarity index 94%
rename from internal/osbuild2/first_boot_stage_test.go
rename to internal/osbuild/first_boot_stage_test.go
index c1df5180a..b2f62cadf 100644
--- a/internal/osbuild2/first_boot_stage_test.go
+++ b/internal/osbuild/first_boot_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/fix_bls_stage_test.go b/internal/osbuild/fix_bls_stage_test.go
similarity index 94%
rename from internal/osbuild2/fix_bls_stage_test.go
rename to internal/osbuild/fix_bls_stage_test.go
index 1395a8096..c888ccb72 100644
--- a/internal/osbuild2/fix_bls_stage_test.go
+++ b/internal/osbuild/fix_bls_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/fstab_stage_test.go b/internal/osbuild/fstab_stage_test.go
similarity index 98%
rename from internal/osbuild2/fstab_stage_test.go
rename to internal/osbuild/fstab_stage_test.go
index 4bc427799..e8b6fc223 100644
--- a/internal/osbuild2/fstab_stage_test.go
+++ b/internal/osbuild/fstab_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/groups_stage_test.go b/internal/osbuild/groups_stage_test.go
similarity index 94%
rename from internal/osbuild2/groups_stage_test.go
rename to internal/osbuild/groups_stage_test.go
index db5d4999b..271f85583 100644
--- a/internal/osbuild2/groups_stage_test.go
+++ b/internal/osbuild/groups_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/grub2_inst_stage_test.go b/internal/osbuild/grub2_inst_stage_test.go
similarity index 99%
rename from internal/osbuild2/grub2_inst_stage_test.go
rename to internal/osbuild/grub2_inst_stage_test.go
index 6ef498fb6..3a18c6d90 100644
--- a/internal/osbuild2/grub2_inst_stage_test.go
+++ b/internal/osbuild/grub2_inst_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/grub2_legacy_stage_test.go b/internal/osbuild/grub2_legacy_stage_test.go
similarity index 97%
rename from internal/osbuild2/grub2_legacy_stage_test.go
rename to internal/osbuild/grub2_legacy_stage_test.go
index 26d2022fb..da74ec082 100644
--- a/internal/osbuild2/grub2_legacy_stage_test.go
+++ b/internal/osbuild/grub2_legacy_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/grub2_stage_test.go b/internal/osbuild/grub2_stage_test.go
similarity index 94%
rename from internal/osbuild2/grub2_stage_test.go
rename to internal/osbuild/grub2_stage_test.go
index 54d30fdbd..2f53daf0c 100644
--- a/internal/osbuild2/grub2_stage_test.go
+++ b/internal/osbuild/grub2_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/hostname_stage_test.go b/internal/osbuild/hostname_stage_test.go
similarity index 94%
rename from internal/osbuild2/hostname_stage_test.go
rename to internal/osbuild/hostname_stage_test.go
index d2c6175ff..6abe8c6f8 100644
--- a/internal/osbuild2/hostname_stage_test.go
+++ b/internal/osbuild/hostname_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/inline_source_test.go b/internal/osbuild/inline_source_test.go
similarity index 97%
rename from internal/osbuild2/inline_source_test.go
rename to internal/osbuild/inline_source_test.go
index ff6192fa7..cb3ef9a11 100644
--- a/internal/osbuild2/inline_source_test.go
+++ b/internal/osbuild/inline_source_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/kernel_cmdline_stage_test.go b/internal/osbuild/kernel_cmdline_stage_test.go
similarity index 95%
rename from internal/osbuild2/kernel_cmdline_stage_test.go
rename to internal/osbuild/kernel_cmdline_stage_test.go
index efc91ce82..aa2149e14 100644
--- a/internal/osbuild2/kernel_cmdline_stage_test.go
+++ b/internal/osbuild/kernel_cmdline_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/keymap_stage_test.go b/internal/osbuild/keymap_stage_test.go
similarity index 97%
rename from internal/osbuild2/keymap_stage_test.go
rename to internal/osbuild/keymap_stage_test.go
index 7ae3ca530..833dbb267 100644
--- a/internal/osbuild2/keymap_stage_test.go
+++ b/internal/osbuild/keymap_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/locale_stage_test.go b/internal/osbuild/locale_stage_test.go
similarity index 94%
rename from internal/osbuild2/locale_stage_test.go
rename to internal/osbuild/locale_stage_test.go
index 37dc82559..f3a15e6f0 100644
--- a/internal/osbuild2/locale_stage_test.go
+++ b/internal/osbuild/locale_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/lvm2_create_stage_test.go b/internal/osbuild/lvm2_create_stage_test.go
similarity index 98%
rename from internal/osbuild2/lvm2_create_stage_test.go
rename to internal/osbuild/lvm2_create_stage_test.go
index 0ede0f3c9..93bf24309 100644
--- a/internal/osbuild2/lvm2_create_stage_test.go
+++ b/internal/osbuild/lvm2_create_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild/lvm2_lv_device_test.go b/internal/osbuild/lvm2_lv_device_test.go
new file mode 100644
index 000000000..cdc397c38
--- /dev/null
+++ b/internal/osbuild/lvm2_lv_device_test.go
@@ -0,0 +1,1 @@
+package osbuild
diff --git a/internal/osbuild2/lvm2_metadata_stage_test.go b/internal/osbuild/lvm2_metadata_stage_test.go
similarity index 98%
rename from internal/osbuild2/lvm2_metadata_stage_test.go
rename to internal/osbuild/lvm2_metadata_stage_test.go
index f83e55699..a5cab60c6 100644
--- a/internal/osbuild2/lvm2_metadata_stage_test.go
+++ b/internal/osbuild/lvm2_metadata_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/mkfs_stages_test.go b/internal/osbuild/mkfs_stages_test.go
similarity index 98%
rename from internal/osbuild2/mkfs_stages_test.go
rename to internal/osbuild/mkfs_stages_test.go
index f17e01e0c..5c0393c16 100644
--- a/internal/osbuild2/mkfs_stages_test.go
+++ b/internal/osbuild/mkfs_stages_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/modprobe_stage_test.go b/internal/osbuild/modprobe_stage_test.go
similarity index 99%
rename from internal/osbuild2/modprobe_stage_test.go
rename to internal/osbuild/modprobe_stage_test.go
index 576cb04b6..7b5c6b869 100644
--- a/internal/osbuild2/modprobe_stage_test.go
+++ b/internal/osbuild/modprobe_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/mount_test.go b/internal/osbuild/mount_test.go
similarity index 98%
rename from internal/osbuild2/mount_test.go
rename to internal/osbuild/mount_test.go
index 2627e2b56..e7fc38736 100644
--- a/internal/osbuild2/mount_test.go
+++ b/internal/osbuild/mount_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/oci_archive_stage_test.go b/internal/osbuild/oci_archive_stage_test.go
similarity index 99%
rename from internal/osbuild2/oci_archive_stage_test.go
rename to internal/osbuild/oci_archive_stage_test.go
index a73dd856c..c4395ec7d 100644
--- a/internal/osbuild2/oci_archive_stage_test.go
+++ b/internal/osbuild/oci_archive_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/osbuild_test.go b/internal/osbuild/osbuild_test.go
similarity index 96%
rename from internal/osbuild2/osbuild_test.go
rename to internal/osbuild/osbuild_test.go
index 12491455d..817532023 100644
--- a/internal/osbuild2/osbuild_test.go
+++ b/internal/osbuild/osbuild_test.go
@@ -1,6 +1,6 @@
 // Package osbuild provides primitives for representing and (un)marshalling
 // OSBuild types.
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/pam_limits_conf_stage_test.go b/internal/osbuild/pam_limits_conf_stage_test.go
similarity index 98%
rename from internal/osbuild2/pam_limits_conf_stage_test.go
rename to internal/osbuild/pam_limits_conf_stage_test.go
index a11ef1fc7..dafce1876 100644
--- a/internal/osbuild2/pam_limits_conf_stage_test.go
+++ b/internal/osbuild/pam_limits_conf_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/pwquality_conf_stage_test.go b/internal/osbuild/pwquality_conf_stage_test.go
similarity index 98%
rename from internal/osbuild2/pwquality_conf_stage_test.go
rename to internal/osbuild/pwquality_conf_stage_test.go
index 25d3eccce..c36739bba 100644
--- a/internal/osbuild2/pwquality_conf_stage_test.go
+++ b/internal/osbuild/pwquality_conf_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/qemu_stage_test.go b/internal/osbuild/qemu_stage_test.go
similarity index 99%
rename from internal/osbuild2/qemu_stage_test.go
rename to internal/osbuild/qemu_stage_test.go
index 58f9140e6..544756fa1 100644
--- a/internal/osbuild2/qemu_stage_test.go
+++ b/internal/osbuild/qemu_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"fmt"
diff --git a/internal/osbuild2/result_test.go b/internal/osbuild/result_test.go
similarity index 99%
rename from internal/osbuild2/result_test.go
rename to internal/osbuild/result_test.go
index bf92124d9..b2c9b5b09 100644
--- a/internal/osbuild2/result_test.go
+++ b/internal/osbuild/result_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"bytes"
diff --git a/internal/osbuild2/result_test_data.go b/internal/osbuild/result_test_data.go
similarity index 99%
rename from internal/osbuild2/result_test_data.go
rename to internal/osbuild/result_test_data.go
index ddfde5b75..cedec782f 100644
--- a/internal/osbuild2/result_test_data.go
+++ b/internal/osbuild/result_test_data.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 const v1ResultSuccess = `
 {
diff --git a/internal/osbuild2/rhsm_stage_test.go b/internal/osbuild/rhsm_stage_test.go
similarity index 99%
rename from internal/osbuild2/rhsm_stage_test.go
rename to internal/osbuild/rhsm_stage_test.go
index 49b8c9136..79c1a8cbb 100644
--- a/internal/osbuild2/rhsm_stage_test.go
+++ b/internal/osbuild/rhsm_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/rpm_stage_test.go b/internal/osbuild/rpm_stage_test.go
similarity index 99%
rename from internal/osbuild2/rpm_stage_test.go
rename to internal/osbuild/rpm_stage_test.go
index a23e55eb2..4879d3762 100644
--- a/internal/osbuild2/rpm_stage_test.go
+++ b/internal/osbuild/rpm_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/script_stage_test.go b/internal/osbuild/script_stage_test.go
similarity index 96%
rename from internal/osbuild2/script_stage_test.go
rename to internal/osbuild/script_stage_test.go
index 380a54a19..b813aff68 100644
--- a/internal/osbuild2/script_stage_test.go
+++ b/internal/osbuild/script_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/selinux_config_stage_test.go b/internal/osbuild/selinux_config_stage_test.go
similarity index 95%
rename from internal/osbuild2/selinux_config_stage_test.go
rename to internal/osbuild/selinux_config_stage_test.go
index e139cc99e..b8fabf676 100644
--- a/internal/osbuild2/selinux_config_stage_test.go
+++ b/internal/osbuild/selinux_config_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/selinux_stage_test.go b/internal/osbuild/selinux_stage_test.go
similarity index 97%
rename from internal/osbuild2/selinux_stage_test.go
rename to internal/osbuild/selinux_stage_test.go
index 7c620955c..833f6bfae 100644
--- a/internal/osbuild2/selinux_stage_test.go
+++ b/internal/osbuild/selinux_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/sfdisk_stage_test.go b/internal/osbuild/sfdisk_stage_test.go
similarity index 97%
rename from internal/osbuild2/sfdisk_stage_test.go
rename to internal/osbuild/sfdisk_stage_test.go
index 622e42eb4..09da6a8f2 100644
--- a/internal/osbuild2/sfdisk_stage_test.go
+++ b/internal/osbuild/sfdisk_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/sgdisk_stage_test.go b/internal/osbuild/sgdisk_stage_test.go
similarity index 98%
rename from internal/osbuild2/sgdisk_stage_test.go
rename to internal/osbuild/sgdisk_stage_test.go
index fb42f21a7..b53b9f32c 100644
--- a/internal/osbuild2/sgdisk_stage_test.go
+++ b/internal/osbuild/sgdisk_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/source_test.go b/internal/osbuild/source_test.go
similarity index 99%
rename from internal/osbuild2/source_test.go
rename to internal/osbuild/source_test.go
index c86127d0a..a49b5f3fc 100644
--- a/internal/osbuild2/source_test.go
+++ b/internal/osbuild/source_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"bytes"
diff --git a/internal/osbuild2/sshd_config_stage_test.go b/internal/osbuild/sshd_config_stage_test.go
similarity index 99%
rename from internal/osbuild2/sshd_config_stage_test.go
rename to internal/osbuild/sshd_config_stage_test.go
index 0ed55db85..9e78c271e 100644
--- a/internal/osbuild2/sshd_config_stage_test.go
+++ b/internal/osbuild/sshd_config_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/sysconfig_stage_test.go b/internal/osbuild/sysconfig_stage_test.go
similarity index 94%
rename from internal/osbuild2/sysconfig_stage_test.go
rename to internal/osbuild/sysconfig_stage_test.go
index 1f41cfddc..9fcc99cf9 100644
--- a/internal/osbuild2/sysconfig_stage_test.go
+++ b/internal/osbuild/sysconfig_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/sysctld_stage_test.go b/internal/osbuild/sysctld_stage_test.go
similarity index 98%
rename from internal/osbuild2/sysctld_stage_test.go
rename to internal/osbuild/sysctld_stage_test.go
index 6ea98889d..dd601ffd5 100644
--- a/internal/osbuild2/sysctld_stage_test.go
+++ b/internal/osbuild/sysctld_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/systemd_logind_stage_test.go b/internal/osbuild/systemd_logind_stage_test.go
similarity index 98%
rename from internal/osbuild2/systemd_logind_stage_test.go
rename to internal/osbuild/systemd_logind_stage_test.go
index f64fbf1c0..4c3f63e8a 100644
--- a/internal/osbuild2/systemd_logind_stage_test.go
+++ b/internal/osbuild/systemd_logind_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/systemd_stage_test.go b/internal/osbuild/systemd_stage_test.go
similarity index 94%
rename from internal/osbuild2/systemd_stage_test.go
rename to internal/osbuild/systemd_stage_test.go
index 559e66b37..7a47b2c33 100644
--- a/internal/osbuild2/systemd_stage_test.go
+++ b/internal/osbuild/systemd_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/systemd_unit_stage_test.go b/internal/osbuild/systemd_unit_stage_test.go
similarity index 95%
rename from internal/osbuild2/systemd_unit_stage_test.go
rename to internal/osbuild/systemd_unit_stage_test.go
index 9d9fa3ce3..38059f768 100644
--- a/internal/osbuild2/systemd_unit_stage_test.go
+++ b/internal/osbuild/systemd_unit_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/tar_stage_test.go b/internal/osbuild/tar_stage_test.go
similarity index 98%
rename from internal/osbuild2/tar_stage_test.go
rename to internal/osbuild/tar_stage_test.go
index 93b57a851..c2eb8a6fb 100644
--- a/internal/osbuild2/tar_stage_test.go
+++ b/internal/osbuild/tar_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/timezone_stage_test.go b/internal/osbuild/timezone_stage_test.go
similarity index 94%
rename from internal/osbuild2/timezone_stage_test.go
rename to internal/osbuild/timezone_stage_test.go
index d7ee9fb7f..857ac5245 100644
--- a/internal/osbuild2/timezone_stage_test.go
+++ b/internal/osbuild/timezone_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/tmpfilesd_stage_test.go b/internal/osbuild/tmpfilesd_stage_test.go
similarity index 98%
rename from internal/osbuild2/tmpfilesd_stage_test.go
rename to internal/osbuild/tmpfilesd_stage_test.go
index f2562ca54..eb2739bb8 100644
--- a/internal/osbuild2/tmpfilesd_stage_test.go
+++ b/internal/osbuild/tmpfilesd_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/truncate_stage_test.go b/internal/osbuild/truncate_stage_test.go
similarity index 95%
rename from internal/osbuild2/truncate_stage_test.go
rename to internal/osbuild/truncate_stage_test.go
index 848c19618..af8d79e03 100644
--- a/internal/osbuild2/truncate_stage_test.go
+++ b/internal/osbuild/truncate_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/tuned_stage_test.go b/internal/osbuild/tuned_stage_test.go
similarity index 98%
rename from internal/osbuild2/tuned_stage_test.go
rename to internal/osbuild/tuned_stage_test.go
index ffc8ea977..31c2c88c0 100644
--- a/internal/osbuild2/tuned_stage_test.go
+++ b/internal/osbuild/tuned_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/udev_rules_stage_test.go b/internal/osbuild/udev_rules_stage_test.go
similarity index 99%
rename from internal/osbuild2/udev_rules_stage_test.go
rename to internal/osbuild/udev_rules_stage_test.go
index 8fd8d0f7f..ff151ad02 100644
--- a/internal/osbuild2/udev_rules_stage_test.go
+++ b/internal/osbuild/udev_rules_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/users_stage_test.go b/internal/osbuild/users_stage_test.go
similarity index 94%
rename from internal/osbuild2/users_stage_test.go
rename to internal/osbuild/users_stage_test.go
index 6610a3e83..3db69c543 100644
--- a/internal/osbuild2/users_stage_test.go
+++ b/internal/osbuild/users_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/xz_stage_test.go b/internal/osbuild/xz_stage_test.go
similarity index 98%
rename from internal/osbuild2/xz_stage_test.go
rename to internal/osbuild/xz_stage_test.go
index addb8a0a5..0a5b2a9f7 100644
--- a/internal/osbuild2/xz_stage_test.go
+++ b/internal/osbuild/xz_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/yum_config_stage_test.go b/internal/osbuild/yum_config_stage_test.go
similarity index 99%
rename from internal/osbuild2/yum_config_stage_test.go
rename to internal/osbuild/yum_config_stage_test.go
index 918e74255..5eb8f74ba 100644
--- a/internal/osbuild2/yum_config_stage_test.go
+++ b/internal/osbuild/yum_config_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"encoding/json"
diff --git a/internal/osbuild2/yum_repos_stage_test.go b/internal/osbuild/yum_repos_stage_test.go
similarity index 99%
rename from internal/osbuild2/yum_repos_stage_test.go
rename to internal/osbuild/yum_repos_stage_test.go
index 06fed221a..3c8716309 100644
--- a/internal/osbuild2/yum_repos_stage_test.go
+++ b/internal/osbuild/yum_repos_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild2/zipl_stage_test.go b/internal/osbuild/zipl_stage_test.go
similarity index 96%
rename from internal/osbuild2/zipl_stage_test.go
rename to internal/osbuild/zipl_stage_test.go
index 97b441364..89a39ad04 100644
--- a/internal/osbuild2/zipl_stage_test.go
+++ b/internal/osbuild/zipl_stage_test.go
@@ -1,4 +1,4 @@
-package osbuild2
+package osbuild
 
 import (
 	"testing"
diff --git a/internal/osbuild1/assembler_test.go b/internal/osbuild1/assembler_test.go
deleted file mode 100644
index 2f4b58227..000000000
--- a/internal/osbuild1/assembler_test.go
+++ /dev/null
@@ -1,171 +0,0 @@
-package osbuild1
-
-import (
-	"encoding/json"
-	"testing"
-
-	"github.com/google/uuid"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestAssembler_UnmarshalJSON(t *testing.T) {
-	tests := []struct {
-		name          string
-		assembler     Assembler
-		data          []byte
-		errorExpected bool
-	}{
-		{
-			// invalid JSON - note the missing brace at the end of the string
-			name:          "invalid json",
-			data:          []byte(`{"name":"org.osbuild.tar","options":{"filename":""}`),
-			errorExpected: true,
-		},
-		{
-			// valid JSON, but with an unknown assembler (org.osbuild.foo)
-			name:          "unknown assembler",
-			data:          []byte(`{"name":"org.osbuild.foo","options":{"bar":null}}`),
-			errorExpected: true,
-		},
-		{
-			name:          "missing options",
-			data:          []byte(`{"name":"org.osbuild.rawfs"`),
-			errorExpected: true,
-		},
-		{
-			name:          "missing name",
-			data:          []byte(`{"options":{"bar":null}}`),
-			errorExpected: true,
-		},
-		{
-			name: "qemu assembler empty",
-			assembler: Assembler{
-				Name:    "org.osbuild.qemu",
-				Options: &QEMUAssemblerOptions{},
-			},
-			data: []byte(`{"name":"org.osbuild.qemu","options":{"format":"","filename":"","size":0,"ptuuid":"","pttype":"","partitions":null}}`),
-		},
-		{
-			name: "qemu assembler full",
-			assembler: Assembler{
-				Name: "org.osbuild.qemu",
-				Options: &QEMUAssemblerOptions{
-					Format:   "qcow2",
-					Filename: "disk.qcow2",
-					Size:     2147483648,
-					PTUUID:   "0x14fc63d2",
-					PTType:   "mbr",
-					Partitions: []QEMUPartition{QEMUPartition{
-						Start:    2048,
-						Bootable: true,
-						Filesystem: &QEMUFilesystem{
-							Type:       "ext4",
-							UUID:       "76a22bf4-f153-4541-b6c7-0332c0dfaeac",
-							Label:      "root",
-							Mountpoint: "/",
-						},
-					}},
-				},
-			},
-			data: []byte(`{"name":"org.osbuild.qemu","options":{"format":"qcow2","filename":"disk.qcow2","size":2147483648,"ptuuid":"0x14fc63d2","pttype":"mbr","partitions":[{"start":2048,"bootable":true,"filesystem":{"type":"ext4","uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","label":"root","mountpoint":"/"}}]}}`),
-		},
-		{
-			name: "tar assembler empty",
-			assembler: Assembler{
-				Name:    "org.osbuild.tar",
-				Options: &TarAssemblerOptions{},
-			},
-			data: []byte(`{"name":"org.osbuild.tar","options":{"filename":""}}`),
-		},
-		{
-			name: "tar assembler full",
-			assembler: Assembler{
-				Name: "org.osbuild.tar",
-				Options: &TarAssemblerOptions{
-					Filename:    "root.tar.xz",
-					Compression: "xz",
-				},
-			},
-			data: []byte(`{"name":"org.osbuild.tar","options":{"filename":"root.tar.xz","compression":"xz"}}`),
-		},
-		{
-			name: "rawfs assembler empty",
-			assembler: Assembler{
-				Name:    "org.osbuild.rawfs",
-				Options: &RawFSAssemblerOptions{},
-			},
-			data: []byte(`{"name":"org.osbuild.rawfs","options":{"filename":"","root_fs_uuid":"00000000-0000-0000-0000-000000000000","size":0}}`),
-		},
-		{
-			name: "rawfs assembler full",
-			assembler: Assembler{
-				Name: "org.osbuild.rawfs",
-				Options: &RawFSAssemblerOptions{
-					Filename:           "filesystem.img",
-					RootFilesystemUUID: uuid.MustParse("76a22bf4-f153-4541-b6c7-0332c0dfaeac"),
-					Size:               2147483648,
-				},
-			},
-			data: []byte(`{"name":"org.osbuild.rawfs","options":{"filename":"filesystem.img","root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","size":2147483648}}`),
-		},
-		{
-			name: "ostree commit assembler",
-			assembler: Assembler{
-				Name: "org.osbuild.ostree.commit",
-				Options: &OSTreeCommitAssemblerOptions{
-					Ref: "foo",
-					Tar: OSTreeCommitAssemblerTarOptions{
-						Filename: "foo.tar",
-					},
-				},
-			},
-			data: []byte(`{"name":"org.osbuild.ostree.commit","options":{"ref":"foo","tar":{"filename":"foo.tar"}}}`),
-		},
-	}
-
-	assert := assert.New(t)
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			assembler := &tt.assembler
-			var gotAssembler Assembler
-			err := gotAssembler.UnmarshalJSON(tt.data)
-			if tt.errorExpected {
-				assert.NotNil(err)
-				return
-			} else {
-				assert.Nil(err)
-			}
-			gotBytes, err := json.Marshal(assembler)
-			assert.Nilf(err, "Could not marshal assembler: %v", err)
-			assert.Equal(tt.data, gotBytes)
-			assert.Equal(&gotAssembler, assembler)
-		})
-	}
-}
-
-func TestNewQEMUAssembler(t *testing.T) {
-	options := &QEMUAssemblerOptions{}
-	expectedAssembler := &Assembler{
-		Name:    "org.osbuild.qemu",
-		Options: &QEMUAssemblerOptions{},
-	}
-	assert.Equal(t, expectedAssembler, NewQEMUAssembler(options))
-}
-
-func TestNewTarAssembler(t *testing.T) {
-	options := &TarAssemblerOptions{}
-	expectedAssembler := &Assembler{
-		Name:    "org.osbuild.tar",
-		Options: &TarAssemblerOptions{},
-	}
-	assert.Equal(t, expectedAssembler, NewTarAssembler(options))
-}
-
-func TestNewRawFSAssembler(t *testing.T) {
-	options := &RawFSAssemblerOptions{}
-	expectedAssembler := &Assembler{
-		Name:    "org.osbuild.rawfs",
-		Options: &RawFSAssemblerOptions{},
-	}
-	assert.Equal(t, expectedAssembler, NewRawFSAssembler(options))
-}
diff --git a/internal/osbuild1/chrony_stage_test.go b/internal/osbuild1/chrony_stage_test.go
deleted file mode 100644
index a62a3b9fd..000000000
--- a/internal/osbuild1/chrony_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewChronyStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.chrony",
-		Options: &ChronyStageOptions{},
-	}
-	actualStage := NewChronyStage(&ChronyStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/firewall_stage_test.go b/internal/osbuild1/firewall_stage_test.go
deleted file mode 100644
index 6bb587812..000000000
--- a/internal/osbuild1/firewall_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewFirewallStage(t *testing.T) {
-	expectedFirewall := &Stage{
-		Name:    "org.osbuild.firewall",
-		Options: &FirewallStageOptions{},
-	}
-	actualFirewall := NewFirewallStage(&FirewallStageOptions{})
-	assert.Equal(t, expectedFirewall, actualFirewall)
-}
diff --git a/internal/osbuild1/first_boot_stage_test.go b/internal/osbuild1/first_boot_stage_test.go
deleted file mode 100644
index a85a33088..000000000
--- a/internal/osbuild1/first_boot_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewFirstBootStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.first-boot",
-		Options: &FirstBootStageOptions{},
-	}
-	actualStage := NewFirstBootStage(&FirstBootStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/fix_bls_stage_test.go b/internal/osbuild1/fix_bls_stage_test.go
deleted file mode 100644
index 6efd07aa8..000000000
--- a/internal/osbuild1/fix_bls_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewFixBLSStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.fix-bls",
-		Options: &FixBLSStageOptions{},
-	}
-	actualStage := NewFixBLSStage()
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/fstab_stage_test.go b/internal/osbuild1/fstab_stage_test.go
deleted file mode 100644
index 1c286ef4c..000000000
--- a/internal/osbuild1/fstab_stage_test.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewFSTabStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.fstab",
-		Options: &FSTabStageOptions{},
-	}
-	actualStage := NewFSTabStage(&FSTabStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
-
-func TestAddFilesystem(t *testing.T) {
-	options := &FSTabStageOptions{}
-	filesystems := []*FSTabEntry{
-		{
-			UUID:    "76a22bf4-f153-4541-b6c7-0332c0dfaeac",
-			VFSType: "ext4",
-			Path:    "/",
-			Options: "defaults",
-			Freq:    1,
-			PassNo:  1,
-		},
-		{
-			UUID:    "bba22bf4-f153-4541-b6c7-0332c0dfaeac",
-			VFSType: "xfs",
-			Path:    "/home",
-			Options: "defaults",
-			Freq:    1,
-			PassNo:  2,
-		},
-		{
-			UUID:    "cca22bf4-f153-4541-b6c7-0332c0dfaeac",
-			VFSType: "xfs",
-			Path:    "/var",
-			Options: "defaults",
-			Freq:    1,
-			PassNo:  1,
-		},
-	}
-
-	for i, fs := range filesystems {
-		options.AddFilesystem(fs.UUID, fs.VFSType, fs.Path, fs.Options, fs.Freq, fs.PassNo)
-		assert.Equal(t, options.FileSystems[i], fs)
-	}
-	assert.Equal(t, len(filesystems), len(options.FileSystems))
-}
diff --git a/internal/osbuild1/groups_stage_test.go b/internal/osbuild1/groups_stage_test.go
deleted file mode 100644
index 6b71f4b97..000000000
--- a/internal/osbuild1/groups_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewGroupsStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.groups",
-		Options: &GroupsStageOptions{},
-	}
-	actualStage := NewGroupsStage(&GroupsStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/grub2_stage_test.go b/internal/osbuild1/grub2_stage_test.go
deleted file mode 100644
index dc4022a22..000000000
--- a/internal/osbuild1/grub2_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewGRUB2Stage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.grub2",
-		Options: &GRUB2StageOptions{},
-	}
-	actualStage := NewGRUB2Stage(&GRUB2StageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/hostname_stage_test.go b/internal/osbuild1/hostname_stage_test.go
deleted file mode 100644
index c8a05aa4a..000000000
--- a/internal/osbuild1/hostname_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewHostnameStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.hostname",
-		Options: &HostnameStageOptions{},
-	}
-	actualStage := NewHostnameStage(&HostnameStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/kernel_cmdline_stage_test.go b/internal/osbuild1/kernel_cmdline_stage_test.go
deleted file mode 100644
index 705bd7d0e..000000000
--- a/internal/osbuild1/kernel_cmdline_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewKernelCmdlineStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.kernel-cmdline",
-		Options: &KernelCmdlineStageOptions{},
-	}
-	actualStage := NewKernelCmdlineStage(&KernelCmdlineStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/keymap_stage_test.go b/internal/osbuild1/keymap_stage_test.go
deleted file mode 100644
index 4ee044402..000000000
--- a/internal/osbuild1/keymap_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewKeymapStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.keymap",
-		Options: &KeymapStageOptions{},
-	}
-	actualStage := NewKeymapStage(&KeymapStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/locale_stage_test.go b/internal/osbuild1/locale_stage_test.go
deleted file mode 100644
index 79b7c85e5..000000000
--- a/internal/osbuild1/locale_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewLocaleStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.locale",
-		Options: &LocaleStageOptions{},
-	}
-	actualStage := NewLocaleStage(&LocaleStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/osbuild_test.go b/internal/osbuild1/osbuild_test.go
deleted file mode 100644
index 01454648f..000000000
--- a/internal/osbuild1/osbuild_test.go
+++ /dev/null
@@ -1,59 +0,0 @@
-// Package osbuild provides primitives for representing and (un)marshalling
-// OSBuild types.
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestPipeline_SetBuild(t *testing.T) {
-	expectedPipeline := &Pipeline{
-		Build: &Build{
-			Pipeline: &Pipeline{},
-			Runner:   "org.osbuild.fedora32",
-		},
-	}
-	actualPipeline := &Pipeline{}
-	actualPipeline.SetBuild(&Pipeline{}, "org.osbuild.fedora32")
-	assert.Equal(t, expectedPipeline, actualPipeline)
-}
-
-func TestPipeline_AddStage(t *testing.T) {
-	expectedPipeline := &Pipeline{
-		Build: &Build{
-			Pipeline: &Pipeline{},
-			Runner:   "org.osbuild.fedora32",
-		},
-		Stages: []*Stage{
-			{
-				Name: "org.osbuild.rpm",
-			},
-		},
-	}
-	actualPipeline := &Pipeline{
-		Build: &Build{
-			Pipeline: &Pipeline{},
-			Runner:   "org.osbuild.fedora32",
-		},
-	}
-	actualPipeline.AddStage(&Stage{
-		Name: "org.osbuild.rpm",
-	})
-	assert.Equal(t, expectedPipeline, actualPipeline)
-	assert.Equal(t, 1, len(actualPipeline.Stages))
-}
-
-func TestPipeline_SetAssembler(t *testing.T) {
-	expectedPipeline := &Pipeline{
-		Assembler: &Assembler{
-			Name: "org.osbuild.testassembler",
-		},
-	}
-	actualPipeline := &Pipeline{}
-	actualPipeline.SetAssembler(&Assembler{
-		Name: "org.osbuild.testassembler",
-	})
-	assert.Equal(t, expectedPipeline, actualPipeline)
-}
diff --git a/internal/osbuild1/resolv_conf_stage_test.go b/internal/osbuild1/resolv_conf_stage_test.go
deleted file mode 100644
index dc9fd34ab..000000000
--- a/internal/osbuild1/resolv_conf_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewResolvConfStageStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.resolv-conf",
-		Options: &ResolvConfStageOptions{},
-	}
-	actualStage := NewResolvConfStage(&ResolvConfStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/result_test.go b/internal/osbuild1/result_test.go
deleted file mode 100644
index ddc3196ee..000000000
--- a/internal/osbuild1/result_test.go
+++ /dev/null
@@ -1,168 +0,0 @@
-package osbuild1
-
-import (
-	"bytes"
-	"encoding/json"
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestUnmarshal(t *testing.T) {
-	resultRaw := `{
-		"success": true,
-		"build": {
-		  "success": true,
-		  "stages": [
-			{
-			  "name": "org.osbuild.rpm",
-			  "id": "9eb0a6f6fd6e2995e107f5bcc6aa3b19643b02ec133bdc8a8ac614860b1bbf2d",
-			  "success": true,
-			  "output": "Building...",
-			  "metadata": {
-				"packages": [
-				  {
-					"name": "libgcc",
-					"version": "10.0.1",
-					"release": "0.11.fc32",
-					"epoch": null,
-					"arch": "x86_64",
-					"sigmd5": "84fc907a5047aeebaf8da1642925a417",
-					"sigpgp": null,
-					"siggpg": "883f0305005f2310139ec3e4c0f7e257e611023e11009f639c5fe64abaa76224dab3a9f70c2714a84c63bd009d1cc184fb4b428dfcd7c3556f4a5f860cc0187740"
-				  },
-				  {
-					"name": "whois-nls",
-					"version": "5.5.6",
-					"release": "1.fc32",
-					"epoch": null,
-					"arch": "noarch",
-					"sigmd5": "f868cd02046630c8ce3a9c48820e2437",
-					"sigpgp": "89023304000108001d162104963a2beb02009608fe67ea4249fd77499570ff3105025f5a272b000a091049fd77499570ff31ccdb0ffe38b95a55ebf3c021526b3cd4f2358c7e23f7767d1f5ce4b7cccef7b33653c6a96a23022313a818fbaf7abeb41837910f0d3ac15664e02838d5939d38ff459aa0076e248728a032d3ae09ddfaec955f941601081a2e3f9bbd49586fd65c1bc1b31685aeb0405687d1791471eab7359ccf00d5584ddef680e99ebc8a4846316391b9baa68ac8ed8ad696ee16fd625d847f8edd92517df3ea6920a46b77b4f119715a0f619f38835d25e0bd0eb5cfad08cd9c796eace6a2b28f4d3dee552e6068255d9748dc2a1906c951e0ba8aed9922ab24e1f659413a06083f8a0bfea56cfff14bddef23bced449f36bcd369da72f90ddf0512e7b0801ba5a0c8eaa8eb0582c630815e992192042cfb0a7c7239f76219197c2fdf18b6553260c105280806d4f037d7b04bdf3da9fd7e9a207db5c71f7e548f4288928f047c989c4cb9cbb8088eec7bd2fa5c252e693f51a3cfc660f666af6a255a5ca0fd2216d5ccd66cbd9c11afa61067d7f615ec8d0dc0c879b5fe633d8c9443f97285da597e4da8a3993af36f0be06acfa9b8058ec70bbc78b876e4c6c5d2108fb05c15a74ba48a3d7ded697cbc1748c228d77d1e0794a41fd5240fa67c3ed745fe47555a47c3d6163d8ce95fd6c2d0d6fa48f8e5b411e571e442109b1cb200d9a8117ee08bfe645f96aca34f7b7559622bbab75143dcad59f126ae0d319e6668ebba417e725638c4febf2e",
-					"siggpg": null
-				  }
-				]
-			  }
-			}
-		  ]
-		}
-	  }`
-
-	var result Result
-	err := json.Unmarshal([]byte(resultRaw), &result)
-	assert.NoError(t, err)
-
-	assert.Equal(t, result.Build.Stages[0].Name, "org.osbuild.rpm")
-	metadata, ok := result.Build.Stages[0].Metadata.(*RPMStageMetadata)
-	assert.True(t, ok)
-	package1 := metadata.Packages[0]
-	assert.Equal(t, package1.Name, "libgcc")
-	assert.Nil(t, package1.Epoch)
-	assert.Equal(t, package1.Version, "10.0.1")
-	assert.Equal(t, package1.Release, "0.11.fc32")
-	assert.Equal(t, package1.Arch, "x86_64")
-	assert.Equal(t, package1.SigMD5, "84fc907a5047aeebaf8da1642925a417")
-	assert.Empty(t, package1.SigPGP)
-	assert.Equal(t, package1.SigGPG, "883f0305005f2310139ec3e4c0f7e257e611023e11009f639c5fe64abaa76224dab3a9f70c2714a84c63bd009d1cc184fb4b428dfcd7c3556f4a5f860cc0187740")
-
-	package2 := metadata.Packages[1]
-	assert.Equal(t, package2.SigPGP, "89023304000108001d162104963a2beb02009608fe67ea4249fd77499570ff3105025f5a272b000a091049fd77499570ff31ccdb0ffe38b95a55ebf3c021526b3cd4f2358c7e23f7767d1f5ce4b7cccef7b33653c6a96a23022313a818fbaf7abeb41837910f0d3ac15664e02838d5939d38ff459aa0076e248728a032d3ae09ddfaec955f941601081a2e3f9bbd49586fd65c1bc1b31685aeb0405687d1791471eab7359ccf00d5584ddef680e99ebc8a4846316391b9baa68ac8ed8ad696ee16fd625d847f8edd92517df3ea6920a46b77b4f119715a0f619f38835d25e0bd0eb5cfad08cd9c796eace6a2b28f4d3dee552e6068255d9748dc2a1906c951e0ba8aed9922ab24e1f659413a06083f8a0bfea56cfff14bddef23bced449f36bcd369da72f90ddf0512e7b0801ba5a0c8eaa8eb0582c630815e992192042cfb0a7c7239f76219197c2fdf18b6553260c105280806d4f037d7b04bdf3da9fd7e9a207db5c71f7e548f4288928f047c989c4cb9cbb8088eec7bd2fa5c252e693f51a3cfc660f666af6a255a5ca0fd2216d5ccd66cbd9c11afa61067d7f615ec8d0dc0c879b5fe633d8c9443f97285da597e4da8a3993af36f0be06acfa9b8058ec70bbc78b876e4c6c5d2108fb05c15a74ba48a3d7ded697cbc1748c228d77d1e0794a41fd5240fa67c3ed745fe47555a47c3d6163d8ce95fd6c2d0d6fa48f8e5b411e571e442109b1cb200d9a8117ee08bfe645f96aca34f7b7559622bbab75143dcad59f126ae0d319e6668ebba417e725638c4febf2e")
-	assert.Empty(t, package2.SigGPG)
-}
-
-func TestWriteFull(t *testing.T) {
-
-	const testOptions = `{"msg": "test"}`
-
-	dnfStage := StageResult{
-		Name:    "org.osbuild.rpm",
-		Options: []byte(testOptions),
-		Success: true,
-		Output:  "Finished",
-		Metadata: RPMStageMetadata{
-			Packages: []RPMPackageMetadata{
-				{
-					Name:    "foobar",
-					Epoch:   nil,
-					Version: "1",
-					Release: "1",
-					Arch:    "noarch",
-					SigMD5:  "deadbeef",
-				},
-			},
-		},
-	}
-
-	testStage := StageResult{
-		Name:    "org.osbuild.test",
-		Options: []byte(testOptions),
-		Success: true,
-		Output:  "Finished",
-	}
-
-	testBuild := buildResult{
-		Stages:  []StageResult{testStage},
-		TreeID:  "treeID",
-		Success: true,
-	}
-
-	testAssembler := StageResult{
-		Name:    "testAssembler",
-		Options: []byte(testOptions),
-		Success: true,
-		Output:  "Done",
-	}
-
-	testComposeResult := Result{
-		TreeID:    "TreeID",
-		OutputID:  "OutputID",
-		Build:     &testBuild,
-		Stages:    []StageResult{dnfStage},
-		Assembler: &testAssembler,
-		Success:   true,
-	}
-
-	var b bytes.Buffer
-	assert.NoError(t, testComposeResult.Write(&b))
-	expectedMessage :=
-		`Build pipeline:
-Stage org.osbuild.test
-{
-  "msg": "test"
-}
-
-Output:
-Finished
-Stages:
-Stage: org.osbuild.rpm
-{
-  "msg": "test"
-}
-
-Output:
-Finished
-Assembler testAssembler:
-{
-  "msg": "test"
-}
-
-Output:
-Done
-`
-	assert.Equal(t, expectedMessage, b.String())
-}
-
-func TestWriteEmpty(t *testing.T) {
-	var b bytes.Buffer
-
-	var testNilResult *Result
-	assert.NoError(t, testNilResult.Write(&b))
-	assert.Equal(t, "The compose result is empty.\n", b.String())
-
-	testComposeResult := Result{}
-
-	b.Reset()
-	assert.NoError(t, testComposeResult.Write(&b))
-	assert.Equal(t, "The compose result is empty.\n", b.String())
-
-}
diff --git a/internal/osbuild1/rhsm_stage_test.go b/internal/osbuild1/rhsm_stage_test.go
deleted file mode 100644
index b63bd60a6..000000000
--- a/internal/osbuild1/rhsm_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewRhsmStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.rhsm",
-		Options: &RHSMStageOptions{},
-	}
-	actualStage := NewRHSMStage(&RHSMStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/rpm_stage_test.go b/internal/osbuild1/rpm_stage_test.go
deleted file mode 100644
index 196b9b430..000000000
--- a/internal/osbuild1/rpm_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewRPMStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.rpm",
-		Options: &RPMStageOptions{},
-	}
-	actualStage := NewRPMStage(&RPMStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/script_stage_test.go b/internal/osbuild1/script_stage_test.go
deleted file mode 100644
index 0470ec3c3..000000000
--- a/internal/osbuild1/script_stage_test.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewScriptStageOptions(t *testing.T) {
-	expectedOptions := &ScriptStageOptions{
-		Script: "/root/test.sh",
-	}
-	actualOptions := NewScriptStageOptions("/root/test.sh")
-	assert.Equal(t, expectedOptions, actualOptions)
-}
-
-func TestNewScriptStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.script",
-		Options: &ScriptStageOptions{},
-	}
-	actualStage := NewScriptStage(&ScriptStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/selinux_stage_test.go b/internal/osbuild1/selinux_stage_test.go
deleted file mode 100644
index 1bea8ad10..000000000
--- a/internal/osbuild1/selinux_stage_test.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewSELinuxStageOptions(t *testing.T) {
-	expectedOptions := &SELinuxStageOptions{
-		FileContexts: "etc/selinux/targeted/contexts/files/file_contexts",
-	}
-	actualOptions := NewSELinuxStageOptions("etc/selinux/targeted/contexts/files/file_contexts")
-	assert.Equal(t, expectedOptions, actualOptions)
-}
-
-func TestNewSELinuxStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.selinux",
-		Options: &SELinuxStageOptions{},
-	}
-	actualStage := NewSELinuxStage(&SELinuxStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/source_test.go b/internal/osbuild1/source_test.go
deleted file mode 100644
index 105128adc..000000000
--- a/internal/osbuild1/source_test.go
+++ /dev/null
@@ -1,100 +0,0 @@
-package osbuild1
-
-import (
-	"bytes"
-	"encoding/json"
-	"reflect"
-	"testing"
-)
-
-func TestSource_UnmarshalJSON(t *testing.T) {
-	type fields struct {
-		Name   string
-		Source Source
-	}
-	type args struct {
-		data []byte
-	}
-	tests := []struct {
-		name    string
-		fields  fields
-		args    args
-		wantErr bool
-	}{
-		{
-			name: "invalid json",
-			args: args{
-				data: []byte(`{"name":"org.osbuild.foo","options":{"bar":null}`),
-			},
-			wantErr: true,
-		},
-		{
-			name: "unknown source",
-			args: args{
-				data: []byte(`{"name":"org.osbuild.foo","options":{"bar":null}}`),
-			},
-			wantErr: true,
-		},
-		{
-			name: "missing options",
-			args: args{
-				data: []byte(`{"name":"org.osbuild.files"}`),
-			},
-			wantErr: true,
-		},
-		{
-			name: "missing name",
-			args: args{
-				data: []byte(`{"foo":null,"options":{"bar":null}}`),
-			},
-			wantErr: true,
-		},
-		{
-			name: "files-empty",
-			fields: fields{
-				Name:   "org.osbuild.files",
-				Source: &FilesSource{URLs: map[string]FileSource{}},
-			},
-			args: args{
-				data: []byte(`{"org.osbuild.files":{"urls":{}}}`),
-			},
-		},
-		{
-			name: "files",
-			fields: fields{
-				Name: "org.osbuild.files",
-				Source: &FilesSource{URLs: map[string]FileSource{
-					"checksum1": FileSource{URL: "url1"},
-					"checksum2": FileSource{URL: "url2"},
-				}},
-			},
-			args: args{
-				data: []byte(`{"org.osbuild.files":{"urls":{"checksum1":{"url":"url1"},"checksum2":{"url":"url2"}}}}`),
-			},
-		},
-	}
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			sources := &Sources{
-				tt.fields.Name: tt.fields.Source,
-			}
-			var gotSources Sources
-			if err := gotSources.UnmarshalJSON(tt.args.data); (err != nil) != tt.wantErr {
-				t.Errorf("Sources.UnmarshalJSON() error = %v, wantErr %v", err, tt.wantErr)
-			}
-			if tt.wantErr {
-				return
-			}
-			gotBytes, err := json.Marshal(sources)
-			if err != nil {
-				t.Errorf("Could not marshal source: %v", err)
-			}
-			if !bytes.Equal(gotBytes, tt.args.data) {
-				t.Errorf("Expected '%v', got '%v'", string(tt.args.data), string(gotBytes))
-			}
-			if !reflect.DeepEqual(&gotSources, sources) {
-				t.Errorf("got '%v', expected '%v'", &gotSources, sources)
-			}
-		})
-	}
-}
diff --git a/internal/osbuild1/sysconfig_stage_test.go b/internal/osbuild1/sysconfig_stage_test.go
deleted file mode 100644
index 7ef0c840a..000000000
--- a/internal/osbuild1/sysconfig_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewSysconfigStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.sysconfig",
-		Options: &SysconfigStageOptions{},
-	}
-	actualStage := NewSysconfigStage(&SysconfigStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/systemd_stage_test.go b/internal/osbuild1/systemd_stage_test.go
deleted file mode 100644
index f414aedae..000000000
--- a/internal/osbuild1/systemd_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewSystemdStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.systemd",
-		Options: &SystemdStageOptions{},
-	}
-	actualStage := NewSystemdStage(&SystemdStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/timezone_stage_test.go b/internal/osbuild1/timezone_stage_test.go
deleted file mode 100644
index 23b665084..000000000
--- a/internal/osbuild1/timezone_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewTimezoneStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.timezone",
-		Options: &TimezoneStageOptions{},
-	}
-	actualStage := NewTimezoneStage(&TimezoneStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/users_stage_test.go b/internal/osbuild1/users_stage_test.go
deleted file mode 100644
index 5d64251da..000000000
--- a/internal/osbuild1/users_stage_test.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewUsersStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.users",
-		Options: &UsersStageOptions{},
-	}
-	actualStage := NewUsersStage(&UsersStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild1/zipl_stage_test.go b/internal/osbuild1/zipl_stage_test.go
deleted file mode 100644
index 959a88df6..000000000
--- a/internal/osbuild1/zipl_stage_test.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package osbuild1
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestNewZiplStageOptions(t *testing.T) {
-	expectedOptions := &ZiplStageOptions{
-		Timeout: 0,
-	}
-	actualOptions := NewZiplStageOptions()
-	assert.Equal(t, expectedOptions, actualOptions)
-}
-
-func TestNewZiplStage(t *testing.T) {
-	expectedStage := &Stage{
-		Name:    "org.osbuild.zipl",
-		Options: &ZiplStageOptions{},
-	}
-	actualStage := NewZiplStage(&ZiplStageOptions{})
-	assert.Equal(t, expectedStage, actualStage)
-}
diff --git a/internal/osbuild2/lvm2_lv_device_test.go b/internal/osbuild2/lvm2_lv_device_test.go
deleted file mode 100644
index d0a454639..000000000
--- a/internal/osbuild2/lvm2_lv_device_test.go
+++ /dev/null
@@ -1,1 +0,0 @@
-package osbuild2
diff --git a/internal/rpmmd/metadata_test.go b/internal/rpmmd/metadata_test.go
index 7f5786305..2cfda7fcf 100644
--- a/internal/rpmmd/metadata_test.go
+++ b/internal/rpmmd/metadata_test.go
@@ -1,4 +1,4 @@
-// a different package is used to prevent import cycles between `rpmmd` and `osbuild2`
+// a different package is used to prevent import cycles between `rpmmd` and `osbuild`
 package rpmmd_test
 
 import (
@@ -6,7 +6,7 @@ import (
 	"testing"
 
 	"github.com/osbuild/osbuild-composer/internal/common"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/stretchr/testify/assert"
 )
diff --git a/internal/store/store_test.go b/internal/store/store_test.go
index 28448fd3c..00c4e43ea 100644
--- a/internal/store/store_test.go
+++ b/internal/store/store_test.go
@@ -11,7 +11,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/common"
 	"github.com/osbuild/osbuild-composer/internal/distro"
 	"github.com/osbuild/osbuild-composer/internal/distro/test_distro"
-	osbuild "github.com/osbuild/osbuild-composer/internal/osbuild1"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/osbuild/osbuild-composer/internal/target"
 )
diff --git a/internal/weldr/api_test.go b/internal/weldr/api_test.go
index d79160e95..4067ade94 100644
--- a/internal/weldr/api_test.go
+++ b/internal/weldr/api_test.go
@@ -1106,10 +1106,10 @@ func TestComposeLogs(t *testing.T) {
 	}{
 		{"/api/v0/compose/logs/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-logs.tar", "application/x-tar", "logs/osbuild.log", "The compose result is empty.\n"},
 		{"/api/v1/compose/logs/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-logs.tar", "application/x-tar", "logs/osbuild.log", "The compose result is empty.\n"},
-		{"/api/v0/compose/metadata/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-metadata.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", "{\"sources\":{},\"pipeline\":{}}"},
-		{"/api/v1/compose/metadata/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-metadata.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", "{\"sources\":{},\"pipeline\":{}}"},
-		{"/api/v0/compose/results/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", "{\"sources\":{},\"pipeline\":{}}"},
-		{"/api/v1/compose/results/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", "{\"sources\":{},\"pipeline\":{}}"},
+		{"/api/v0/compose/metadata/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-metadata.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", `{"version":"","pipelines":[],"sources":{}}`},
+		{"/api/v1/compose/metadata/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002-metadata.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", `{"version":"","pipelines":[],"sources":{}}`},
+		{"/api/v0/compose/results/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", `{"version":"","pipelines":[],"sources":{}}`},
+		{"/api/v1/compose/results/30000000-0000-0000-0000-000000000002", "attachment; filename=30000000-0000-0000-0000-000000000002.tar", "application/x-tar", "30000000-0000-0000-0000-000000000002.json", `{"version":"","pipelines":[],"sources":{}}`},
 	}
 
 	tempdir := t.TempDir()
diff --git a/internal/worker/server_test.go b/internal/worker/server_test.go
index 4546a3bf8..4f550dc34 100644
--- a/internal/worker/server_test.go
+++ b/internal/worker/server_test.go
@@ -18,7 +18,7 @@ import (
 	"github.com/osbuild/osbuild-composer/internal/distro"
 	"github.com/osbuild/osbuild-composer/internal/distro/test_distro"
 	"github.com/osbuild/osbuild-composer/internal/jobqueue/fsjobqueue"
-	"github.com/osbuild/osbuild-composer/internal/osbuild2"
+	"github.com/osbuild/osbuild-composer/internal/osbuild"
 	"github.com/osbuild/osbuild-composer/internal/rpmmd"
 	"github.com/osbuild/osbuild-composer/internal/target"
 	"github.com/osbuild/osbuild-composer/internal/test"
@@ -138,7 +138,7 @@ func TestCreate(t *testing.T) {
 
 	test.TestRoute(t, handler, false, "POST", "/api/worker/v1/jobs",
 		fmt.Sprintf(`{"types":["%s"],"arch":"%s"}`, worker.JobTypeOSBuild, test_distro.TestArchName), http.StatusCreated,
-		fmt.Sprintf(`{"kind":"RequestJob","href":"/api/worker/v1/jobs","type":"%s","args":{"manifest":{"pipeline":{},"sources":{}}}}`, worker.JobTypeOSBuild), "id", "location", "artifact_location")
+		fmt.Sprintf(`{"kind":"RequestJob","href":"/api/worker/v1/jobs","type":"%s","args":{"manifest":{"version":"","pipelines":[],"sources":{}}}}`, worker.JobTypeOSBuild), "id", "location", "artifact_location")
 }
 
 func TestCancel(t *testing.T) {
@@ -493,12 +493,12 @@ func TestMixedOSBuildJob(t *testing.T) {
 
 	oldJobResult := &worker.OSBuildJobResult{
 		Success: true,
-		OSBuildOutput: &osbuild2.Result{
+		OSBuildOutput: &osbuild.Result{
 			Type:    "result",
 			Success: true,
-			Log: map[string]osbuild2.PipelineResult{
+			Log: map[string]osbuild.PipelineResult{
 				"build-old": {
-					osbuild2.StageResult{
+					osbuild.StageResult{
 						ID:      "---",
 						Type:    "org.osbuild.test",
 						Output:  "<test output>",
@@ -531,12 +531,12 @@ func TestMixedOSBuildJob(t *testing.T) {
 			Build:   []string{"build-result"},
 			Payload: []string{"result-test-payload", "result-test-assembler"},
 		},
-		OSBuildOutput: &osbuild2.Result{
+		OSBuildOutput: &osbuild.Result{
 			Type:    "result",
 			Success: true,
-			Log: map[string]osbuild2.PipelineResult{
+			Log: map[string]osbuild.PipelineResult{
 				"build-new": {
-					osbuild2.StageResult{
+					osbuild.StageResult{
 						ID:      "---",
 						Type:    "org.osbuild.test",
 						Output:  "<test output new>",
@@ -648,12 +648,12 @@ func TestMixedOSBuildKojiJob(t *testing.T) {
 	oldJobResult := &worker.OSBuildKojiJobResult{
 		HostOS: "rhel-10",
 		Arch:   "k",
-		OSBuildOutput: &osbuild2.Result{
+		OSBuildOutput: &osbuild.Result{
 			Type:    "result",
 			Success: true,
-			Log: map[string]osbuild2.PipelineResult{
+			Log: map[string]osbuild.PipelineResult{
 				"build-old": {
-					osbuild2.StageResult{
+					osbuild.StageResult{
 						ID:      "---",
 						Type:    "org.osbuild.test",
 						Output:  "<test output>",
@@ -688,12 +688,12 @@ func TestMixedOSBuildKojiJob(t *testing.T) {
 			Build:   []string{"build-result"},
 			Payload: []string{"result-test-payload", "result-test-assembler"},
 		},
-		OSBuildOutput: &osbuild2.Result{
+		OSBuildOutput: &osbuild.Result{
 			Type:    "result",
 			Success: true,
-			Log: map[string]osbuild2.PipelineResult{
+			Log: map[string]osbuild.PipelineResult{
 				"build-new": {
-					osbuild2.StageResult{
+					osbuild.StageResult{
 						ID:      "---",
 						Type:    "org.osbuild.test",
 						Output:  "<test output new>",
@@ -1357,7 +1357,7 @@ func TestJobDependencyChainErrors(t *testing.T) {
 							},
 						},
 						result: &worker.OSBuildKojiJobResult{
-							OSBuildOutput: &osbuild2.Result{},
+							OSBuildOutput: &osbuild.Result{},
 						},
 					},
 				},
@@ -1566,7 +1566,7 @@ func TestJobDependencyChainErrors(t *testing.T) {
 							},
 						},
 						result: &worker.OSBuildKojiJobResult{
-							OSBuildOutput: &osbuild2.Result{},
+							OSBuildOutput: &osbuild.Result{},
 						},
 					},
 					// passed build
@@ -1589,7 +1589,7 @@ func TestJobDependencyChainErrors(t *testing.T) {
 							},
 						},
 						result: &worker.OSBuildKojiJobResult{
-							OSBuildOutput: &osbuild2.Result{},
+							OSBuildOutput: &osbuild.Result{},
 						},
 					},
 				},
@@ -1637,7 +1637,7 @@ func TestJobDependencyChainErrors(t *testing.T) {
 							},
 						},
 						result: &worker.OSBuildKojiJobResult{
-							OSBuildOutput: &osbuild2.Result{},
+							OSBuildOutput: &osbuild.Result{},
 						},
 					},
 					// passed build
@@ -1660,7 +1660,7 @@ func TestJobDependencyChainErrors(t *testing.T) {
 							},
 						},
 						result: &worker.OSBuildKojiJobResult{
-							OSBuildOutput: &osbuild2.Result{},
+							OSBuildOutput: &osbuild.Result{},
 						},
 					},
 				},