diff --git a/core/installer/welcome/appmanager.go b/core/installer/welcome/appmanager.go
index 8622fdc..2f9f17a 100644
--- a/core/installer/welcome/appmanager.go
+++ b/core/installer/welcome/appmanager.go
@@ -1,7 +1,6 @@
 package welcome
 
 import (
-	"bytes"
 	"context"
 	"embed"
 	"encoding/json"
@@ -171,10 +170,10 @@
 	if err := json.Unmarshal(contents, &values); err != nil {
 		return err
 	}
-	if network, ok := values["Network"]; ok {
+	if network, ok := values["network"]; ok {
 		for _, n := range installer.CreateNetworks(global) {
 			if n.Name == network { // TODO(giolekva): handle not found
-				values["Network"] = n
+				values["network"] = n
 			}
 		}
 	}
@@ -186,12 +185,12 @@
 	if err != nil {
 		return err
 	}
-	var readme bytes.Buffer
-	if err := a.Readme.Execute(&readme, all); err != nil {
+	r, err := a.Render(all)
+	if err != nil {
 		return err
 	}
 	var resp rendered
-	resp.Readme = readme.String()
+	resp.Readme = r.Readme
 	out, err := json.Marshal(resp)
 	if err != nil {
 		return err
@@ -300,7 +299,6 @@
 	}
 	appTmpl, err := template.Must(baseTmpl.Clone()).Parse(appHtmlTmpl)
 	if err != nil {
-		fmt.Println(err)
 		return err
 	}
 	global, err := s.m.Config()
@@ -321,7 +319,6 @@
 		Instances:         instances,
 		AvailableNetworks: installer.CreateNetworks(global),
 	})
-	fmt.Println(err)
 	return err
 }
 
@@ -333,7 +330,6 @@
 	appTmpl, err := template.Must(baseTmpl.Clone()).Parse(appHtmlTmpl)
 	// tmpl, err := newTemplate().ParseFS(mgrTmpl, "appmanager-tmpl/base.html", "appmanager-tmpl/app.html")
 	if err != nil {
-		fmt.Println(err)
 		return err
 	}
 	global, err := s.m.Config()
@@ -359,7 +355,6 @@
 		Instances:         instances,
 		AvailableNetworks: installer.CreateNetworks(global),
 	})
-	fmt.Println(err)
 	return err
 }
 
