diff --git a/app.go b/app.go
index 228908188..5515a05c2 100644
--- a/app.go
+++ b/app.go
@@ -7,7 +7,6 @@ import (
 	"strings"
 	"time"
 
-	"github.com/cloudsonic/sonic-server/conf"
 	"github.com/cloudsonic/sonic-server/log"
 	"github.com/cloudsonic/sonic-server/scanner"
 	"github.com/go-chi/chi"
@@ -16,14 +15,16 @@ import (
 )
 
 type App struct {
+	Importer *scanner.Importer
 	router   *chi.Mux
-	importer *scanner.Importer
 }
 
-func (a *App) Initialize() {
+func NewApp(importer *scanner.Importer) *App {
+	a := &App{Importer: importer}
 	initMimeTypes()
 	a.initRoutes()
 	a.initImporter()
+	return a
 }
 
 func (a *App) MountRouter(path string, subRouter http.Handler) {
@@ -60,7 +61,6 @@ func (a *App) initRoutes() {
 }
 
 func (a *App) initImporter() {
-	a.importer = initImporter(conf.Sonic.MusicFolder)
 	go a.startPeriodicScans()
 }
 
@@ -68,7 +68,7 @@ func (a *App) startPeriodicScans() {
 	for {
 		select {
 		case <-time.After(5 * time.Second):
-			a.importer.CheckForUpdates(false)
+			a.Importer.CheckForUpdates(false)
 		}
 	}
 }
diff --git a/main.go b/main.go
index 78f0894e4..3ab9510ec 100644
--- a/main.go
+++ b/main.go
@@ -11,8 +11,7 @@ func main() {
 
 	fmt.Printf("\nCloudSonic Server v%s\n\n", "0.2")
 
-	a := App{}
-	a.Initialize()
+	a := createApp(conf.Sonic.MusicFolder)
 	a.MountRouter("/rest/", initRouter().Routes())
 	a.Run(":" + conf.Sonic.Port)
 }
diff --git a/wire_gen.go b/wire_gen.go
index 5a19e325b..8763e7025 100644
--- a/wire_gen.go
+++ b/wire_gen.go
@@ -20,6 +20,22 @@ import (
 
 // Injectors from wire_injectors.go:
 
+func createApp(musicFolder string) *App {
+	checkSumRepository := db_storm.NewCheckSumRepository()
+	itunesScanner := scanner.NewItunesScanner(checkSumRepository)
+	mediaFileRepository := db_storm.NewMediaFileRepository()
+	albumRepository := db_storm.NewAlbumRepository()
+	artistRepository := db_storm.NewArtistRepository()
+	artistIndexRepository := db_storm.NewArtistIndexRepository()
+	playlistRepository := db_storm.NewPlaylistRepository()
+	propertyRepository := db_storm.NewPropertyRepository()
+	db := newDB()
+	search := engine.NewSearch(artistRepository, albumRepository, mediaFileRepository, db)
+	importer := scanner.NewImporter(musicFolder, itunesScanner, mediaFileRepository, albumRepository, artistRepository, artistIndexRepository, playlistRepository, propertyRepository, search)
+	app := NewApp(importer)
+	return app
+}
+
 func initRouter() *api.Router {
 	propertyRepository := db_storm.NewPropertyRepository()
 	mediaFolderRepository := persistence.NewMediaFolderRepository()
@@ -42,21 +58,6 @@ func initRouter() *api.Router {
 	return router
 }
 
-func initImporter(musicFolder string) *scanner.Importer {
-	checkSumRepository := db_storm.NewCheckSumRepository()
-	itunesScanner := scanner.NewItunesScanner(checkSumRepository)
-	mediaFileRepository := db_storm.NewMediaFileRepository()
-	albumRepository := db_storm.NewAlbumRepository()
-	artistRepository := db_storm.NewArtistRepository()
-	artistIndexRepository := db_storm.NewArtistIndexRepository()
-	playlistRepository := db_storm.NewPlaylistRepository()
-	propertyRepository := db_storm.NewPropertyRepository()
-	db := newDB()
-	search := engine.NewSearch(artistRepository, albumRepository, mediaFileRepository, db)
-	importer := scanner.NewImporter(musicFolder, itunesScanner, mediaFileRepository, albumRepository, artistRepository, artistIndexRepository, playlistRepository, propertyRepository, search)
-	return importer
-}
-
 // wire_injectors.go:
 
 var allProviders = wire.NewSet(itunesbridge.NewItunesControl, db_storm.Set, engine.Set, scanner.Set, newDB, api.NewRouter)
diff --git a/wire_injectors.go b/wire_injectors.go
index 5d95ba8be..d06cf7af5 100644
--- a/wire_injectors.go
+++ b/wire_injectors.go
@@ -24,11 +24,14 @@ var allProviders = wire.NewSet(
 	api.NewRouter,
 )
 
-func initRouter() *api.Router {
-	panic(wire.Build(allProviders))
+func createApp(musicFolder string) *App {
+	panic(wire.Build(
+		NewApp,
+		allProviders,
+	))
 }
 
-func initImporter(musicFolder string) *scanner.Importer {
+func initRouter() *api.Router {
 	panic(wire.Build(allProviders))
 }