diff --git a/cmd/gosdn-tview/app/app.go b/cmd/gosdn-tview/app/app.go
index d8e9772d64646567ea861a49c708ed164e18b4d1..e65af13c574abbc01551afc45e88323d4b36c2da 100644
--- a/cmd/gosdn-tview/app/app.go
+++ b/cmd/gosdn-tview/app/app.go
@@ -5,8 +5,10 @@ import "github.com/rivo/tview"
 type view interface {
 	GetContent() tview.Primitive
 }
+
 type App struct {
-	app *tview.Application
+	app   *tview.Application
+	pages *tview.Pages
 }
 
 func NewApp() *App {
@@ -16,8 +18,19 @@ func NewApp() *App {
 	return a
 }
 
-func (a *App) SetView(v view) {
-	a.app.SetRoot(v.GetContent(), true)
+func (a *App) SetRoot(v view) {
+	a.pages = v.GetContent().(*tview.Pages)
+	a.app.SetRoot(a.pages, true)
+}
+
+func (a *App) SwitchPage(s string) {
+	if a.pages.HasPage(s) {
+		a.pages.SwitchToPage(s)
+	}
+}
+
+func (a *App) AddPage(name string, p view) {
+	a.pages.AddPage(name, p.GetContent(), true, false)
 }
 
 func (a *App) Run() error {
diff --git a/cmd/gosdn-tview/main.go b/cmd/gosdn-tview/main.go
index 36570d4941e3363c9cbe9cf47eb8279570585a7c..ef8c54ef9c799e70f0471414f67bcc0f339ec22f 100644
--- a/cmd/gosdn-tview/main.go
+++ b/cmd/gosdn-tview/main.go
@@ -14,7 +14,11 @@ func main() {
 	}
 
 	app := app.NewApp()
-	app.SetView(views.NewMainView(app, conn))
+	mainView := views.NewMainView(app, conn)
+	addPNDView := views.NewAddPNDView(app)
+
+	app.SetRoot(mainView)
+	app.AddPage("PND", addPNDView)
 
 	app.Run()
 	defer app.Stop()
diff --git a/cmd/gosdn-tview/views/addPNDView.go b/cmd/gosdn-tview/views/addPNDView.go
new file mode 100644
index 0000000000000000000000000000000000000000..0060852eeb51293b9a76b5784680a6b726cdb9b3
--- /dev/null
+++ b/cmd/gosdn-tview/views/addPNDView.go
@@ -0,0 +1,35 @@
+package views
+
+import (
+	"code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app"
+	"github.com/rivo/tview"
+)
+
+type AddPNDView struct {
+	addPNDView *tview.Form
+}
+
+func NewAddPNDView(app *app.App) *AddPNDView {
+	pndv := &AddPNDView{
+		addPNDView: tview.NewForm(),
+	}
+	pndv.addPNDView.
+		AddInputField("Name", "", 20, nil, nil).
+		AddInputField("description", "", 20, nil, nil).
+		AddDropDown("SI", []string{"Southbound 1", "Southbound 2", "Southbound 3", "Southbound 4"}, 0, nil).
+		AddButton("Send", func() {
+			//TODO: call grpc function here
+		}).
+		AddButton("Abort", func() {
+			app.SwitchPage("main")
+		}).
+		SetCancelFunc(func() {
+			app.SwitchPage("main")
+		})
+
+	return pndv
+}
+
+func (pndv *AddPNDView) GetContent() tview.Primitive {
+	return pndv.addPNDView
+}
diff --git a/cmd/gosdn-tview/views/commandsListView.go b/cmd/gosdn-tview/views/commandsListView.go
index 8e4009a968d073e70c5da41474daa43ce6e481b2..16ff032ba64f44947ebccd07134ab5f82e59597d 100644
--- a/cmd/gosdn-tview/views/commandsListView.go
+++ b/cmd/gosdn-tview/views/commandsListView.go
@@ -28,6 +28,11 @@ func (cv *CommandListView) GetContent() tview.Primitive {
 
 func (cv *CommandListView) GetCommands(app *app.App, rv *ResultAndInputView,
 	conn *grpc.ClientConn) {
+	//TODO: create own command in grpc -> commands
+	cv.commandsList.AddItem("AddPND", "closes the application", '!', func() {
+		app.SwitchPage("PND")
+	})
+
 	for i, command := range commands.CommandList {
 		f := command.Function
 		cv.commandsList.