diff --git a/core/commands/pin.go b/core/commands/pin.go
index e6155df9c00959668fd05fb0751a7bd3016277c0..9b595e38158c9fa0756dd721afc40e9dc04b0670 100644
--- a/core/commands/pin.go
+++ b/core/commands/pin.go
@@ -212,13 +212,18 @@ Example:
 		}
 
 		keys := make(map[string]RefKeyObject)
-		if typeStr == "direct" || typeStr == "all" {
-			for _, k := range n.Pinning.DirectKeys() {
+
+		AddToResultKeys := func(keyList []key.Key, typeStr string) {
+			for _, k := range keyList {
 				keys[k.B58String()] = RefKeyObject{
-					Type: "direct",
+					Type: typeStr,
 				}
 			}
 		}
+
+		if typeStr == "direct" || typeStr == "all" {
+			AddToResultKeys(n.Pinning.DirectKeys(), "direct")
+		}
 		if typeStr == "indirect" || typeStr == "all" {
 			ks := key.NewKeySet()
 			for _, k := range n.Pinning.RecursiveKeys() {
@@ -232,20 +237,11 @@ Example:
 					res.SetError(err, cmds.ErrNormal)
 					return
 				}
-
-			}
-			for _, k := range ks.Keys() {
-				keys[k.B58String()] = RefKeyObject{
-					Type: "indirect",
-				}
 			}
+			AddToResultKeys(ks.Keys(), "indirect")
 		}
 		if typeStr == "recursive" || typeStr == "all" {
-			for _, k := range n.Pinning.RecursiveKeys() {
-				keys[k.B58String()] = RefKeyObject{
-					Type: "recursive",
-				}
-			}
+			AddToResultKeys(n.Pinning.RecursiveKeys(), "recursive")
 		}
 
 		res.SetOutput(&RefKeyList{Keys: keys})