diff --git a/core/commands2/pin.go b/core/commands2/pin.go
index 2b06bdf223fe8c4894a2c8d041d7c728739014eb..75e19d7113b4fd4bba20e266a0b102fd6e9719db 100644
--- a/core/commands2/pin.go
+++ b/core/commands2/pin.go
@@ -10,6 +10,13 @@ import (
 )
 
 var pinCmd = &cmds.Command{
+	Subcommands: map[string]*cmds.Command{
+		"add": addPinCmd,
+		"rm":  rmPinCmd,
+	},
+}
+
+var addPinCmd = &cmds.Command{
 	Options: []cmds.Option{
 		cmds.Option{[]string{"recursive", "r"}, cmds.Bool},
 		cmds.Option{[]string{"depth", "d"}, cmds.Uint},
@@ -39,7 +46,7 @@ var pinCmd = &cmds.Command{
 	},
 }
 
-var unpinCmd = &cmds.Command{
+var rmPinCmd = &cmds.Command{
 	Options: []cmds.Option{
 		cmds.Option{[]string{"recursive", "r"}, cmds.Bool},
 	},
diff --git a/core/commands2/root.go b/core/commands2/root.go
index 9417b9b7af5737f7acf7a6205f73f78e691ce0be..9cc6a228f244c442eaa223a286d9a522ab429267 100644
--- a/core/commands2/root.go
+++ b/core/commands2/root.go
@@ -64,7 +64,6 @@ var rootSubcommands = map[string]*cmds.Command{
 	"log":       logCmd,
 	"net-diag":  diagCmd,
 	"pin":       pinCmd,
-	"unpin":     unpinCmd,
 	"version":   versionCmd,
 	"config":    configCmd,
 	"bootstrap": bootstrapCmd,
@@ -90,12 +89,14 @@ var rootSubcommands = map[string]*cmds.Command{
 		},
 		Type: &TestOutput{},
 	},
+	// TODO rm
 	"boop": &cmds.Command{
 		Run: func(res cmds.Response, req cmds.Request) {
 			v := strings.NewReader("hello, world")
 			res.SetOutput(v)
 		},
 	},
+	// TODO rm
 	"warp": &cmds.Command{
 		Options: []cmds.Option{
 			cmds.Option{[]string{"power", "p"}, cmds.Float},
@@ -115,6 +116,7 @@ var rootSubcommands = map[string]*cmds.Command{
 			}
 		},
 	},
+	// TODO rm
 	"args": &cmds.Command{
 		Run: func(res cmds.Response, req cmds.Request) {
 			res.SetOutput(req.Arguments())