diff --git a/core/installer/cmd/app_manager.go b/core/installer/cmd/app_manager.go
index 16ac83a..afc7d32 100644
--- a/core/installer/cmd/app_manager.go
+++ b/core/installer/cmd/app_manager.go
@@ -7,9 +7,9 @@
 	"golang.org/x/crypto/ssh"
 
 	"github.com/giolekva/pcloud/core/installer"
+	"github.com/giolekva/pcloud/core/installer/server/appmanager"
 	"github.com/giolekva/pcloud/core/installer/soft"
 	"github.com/giolekva/pcloud/core/installer/tasks"
-	"github.com/giolekva/pcloud/core/installer/welcome"
 
 	"github.com/go-git/go-billy/v5/memfs"
 	"github.com/spf13/cobra"
@@ -143,7 +143,7 @@
 	if err != nil {
 		return err
 	}
-	s, err := welcome.NewAppManagerServer(
+	s, err := appmanager.NewServer(
 		appManagerFlags.port,
 		repoIO,
 		m,
diff --git a/core/installer/cmd/dodo_app.go b/core/installer/cmd/dodo_app.go
index 7954690..562627c 100644
--- a/core/installer/cmd/dodo_app.go
+++ b/core/installer/cmd/dodo_app.go
@@ -12,9 +12,9 @@
 	"os"
 
 	"github.com/giolekva/pcloud/core/installer"
+	dodoapp "github.com/giolekva/pcloud/core/installer/server/dodo-app"
 	"github.com/giolekva/pcloud/core/installer/soft"
 	"github.com/giolekva/pcloud/core/installer/tasks"
-	"github.com/giolekva/pcloud/core/installer/welcome"
 
 	_ "github.com/ncruces/go-sqlite3"
 	_ "github.com/ncruces/go-sqlite3/driver"
@@ -172,14 +172,14 @@
 	if err != nil {
 		return err
 	}
-	if ok, err := softClient.RepoExists(welcome.ConfigRepoName); err != nil {
+	if ok, err := softClient.RepoExists(dodoapp.ConfigRepoName); err != nil {
 		return err
 	} else if !ok {
-		if err := softClient.AddRepository(welcome.ConfigRepoName); err != nil {
+		if err := softClient.AddRepository(dodoapp.ConfigRepoName); err != nil {
 			return err
 		}
 	}
-	configRepo, err := softClient.GetRepo(welcome.ConfigRepoName)
+	configRepo, err := softClient.GetRepo(dodoapp.ConfigRepoName)
 	if err != nil {
 		return err
 	}
@@ -187,24 +187,24 @@
 	if err != nil {
 		return err
 	}
-	st, err := welcome.NewStore(configRepo, db)
+	st, err := dodoapp.NewStore(configRepo, db)
 	if err != nil {
 		return err
 	}
-	var nf welcome.NetworkFilter
+	var nf dodoapp.NetworkFilter
 	if len(dodoAppFlags.networks) == 0 {
-		nf = welcome.NewNoNetworkFilter()
+		nf = dodoapp.NewNoNetworkFilter()
 	} else {
-		nf = welcome.NewAllowListFilter(dodoAppFlags.networks)
+		nf = dodoapp.NewAllowListFilter(dodoAppFlags.networks)
 	}
 	if dodoAppFlags.external {
-		nf = welcome.NewCombinedFilter(welcome.NewNetworkFilterByOwner(st), nf)
+		nf = dodoapp.NewCombinedFilter(dodoapp.NewNetworkFilterByOwner(st), nf)
 	}
-	var ug welcome.UserGetter
+	var ug dodoapp.UserGetter
 	if dodoAppFlags.external {
-		ug = welcome.NewExternalUserGetter()
+		ug = dodoapp.NewExternalUserGetter()
 	} else {
-		ug = welcome.NewInternalUserGetter()
+		ug = dodoapp.NewInternalUserGetter()
 	}
 	reconciler := &tasks.SequentialReconciler{
 		[]tasks.Reconciler{
@@ -214,7 +214,7 @@
 	}
 	vpnKeyGen := installer.NewHeadscaleAPIClient(dodoAppFlags.headscaleAPIAddr)
 	cnc := &proxyConfigurator{dodoAppFlags.envAppManagerAddr}
-	s, err := welcome.NewDodoAppServer(
+	s, err := dodoapp.NewServer(
 		st,
 		nf,
 		ug,
diff --git a/core/installer/cmd/env_manager.go b/core/installer/cmd/env_manager.go
index c0ea8e8..483211e 100644
--- a/core/installer/cmd/env_manager.go
+++ b/core/installer/cmd/env_manager.go
@@ -8,9 +8,9 @@
 	"github.com/giolekva/pcloud/core/installer"
 	"github.com/giolekva/pcloud/core/installer/dns"
 	"github.com/giolekva/pcloud/core/installer/http"
+	"github.com/giolekva/pcloud/core/installer/server/env"
 	"github.com/giolekva/pcloud/core/installer/soft"
 	"github.com/giolekva/pcloud/core/installer/tasks"
-	"github.com/giolekva/pcloud/core/installer/welcome"
 )
 
 var envManagerFlags struct {
@@ -82,7 +82,7 @@
 		return err
 	}
 	httpClient := http.NewClient()
-	s := welcome.NewEnvServer(
+	s := env.NewEnvServer(
 		envManagerFlags.port,
 		ss,
 		repoIO,
diff --git a/core/installer/cmd/launcher.go b/core/installer/cmd/launcher.go
index 71decb6..20b8d26 100644
--- a/core/installer/cmd/launcher.go
+++ b/core/installer/cmd/launcher.go
@@ -7,8 +7,8 @@
 	"os"
 
 	"github.com/giolekva/pcloud/core/installer"
+	"github.com/giolekva/pcloud/core/installer/server/launcher"
 	"github.com/giolekva/pcloud/core/installer/soft"
-	"github.com/giolekva/pcloud/core/installer/welcome"
 
 	"github.com/spf13/cobra"
 	"golang.org/x/crypto/ssh"
@@ -84,10 +84,10 @@
 	if err != nil {
 		return err
 	}
-	s, err := welcome.NewLauncherServer(
+	s, err := launcher.NewLauncherServer(
 		launcherFlags.port,
 		fmt.Sprintf("https://%s", authBaseAddr.Host),
-		&welcome.AppManagerDirectory{AppManager: appManager},
+		&launcher.AppManagerDirectory{AppManager: appManager},
 	)
 	if err != nil {
 		return fmt.Errorf("failed to create LauncherServer: %v", err)
diff --git a/core/installer/cmd/welcome.go b/core/installer/cmd/welcome.go
index d754ad3..32d5c42 100644
--- a/core/installer/cmd/welcome.go
+++ b/core/installer/cmd/welcome.go
@@ -4,8 +4,8 @@
 	"os"
 
 	"github.com/giolekva/pcloud/core/installer"
+	"github.com/giolekva/pcloud/core/installer/server/welcome"
 	"github.com/giolekva/pcloud/core/installer/soft"
-	"github.com/giolekva/pcloud/core/installer/welcome"
 	"github.com/spf13/cobra"
 	"golang.org/x/crypto/ssh"
 )
