diff --git a/cmd/tk/check.go b/cmd/tk/check.go
index 06b1c9d88f951056e68de3cf4c1ae71a5a731bca..4ebb03ab4a59426d8208254d6489b71d55ecc549 100644
--- a/cmd/tk/check.go
+++ b/cmd/tk/check.go
@@ -4,12 +4,8 @@ import (
 	"fmt"
 	"os"
 	"os/exec"
-	"path/filepath"
 
 	"github.com/spf13/cobra"
-	"k8s.io/client-go/kubernetes"
-	_ "k8s.io/client-go/plugin/pkg/client/auth"
-	"k8s.io/client-go/tools/clientcmd"
 )
 
 var checkCmd = &cobra.Command{
@@ -17,24 +13,16 @@ var checkCmd = &cobra.Command{
 	Short: "Check for potential problems",
 	Long: `
 The check command will perform a series of checks to validate that
-the local environment and Kubernetes cluster are configured correctly.`,
+the local environment is configured correctly.`,
 	Example: `  check --pre`,
 	RunE:    runCheckCmd,
 }
 
 var (
-	kubeconfig string
-	checkPre   bool
+	checkPre bool
 )
 
 func init() {
-	if home := homeDir(); home != "" {
-		checkCmd.Flags().StringVarP(&kubeconfig, "kubeconfig", "", filepath.Join(home, ".kube", "config"),
-			"path to the kubeconfig file")
-	} else {
-		checkCmd.Flags().StringVarP(&kubeconfig, "kubeconfig", "", "",
-			"absolute path to the kubeconfig file")
-	}
 	checkCmd.Flags().BoolVarP(&checkPre, "pre", "", false,
 		"only run pre-installation checks")
 
@@ -58,13 +46,6 @@ func runCheckCmd(cmd *cobra.Command, args []string) error {
 	return nil
 }
 
-func homeDir() string {
-	if h := os.Getenv("HOME"); h != "" {
-		return h
-	}
-	return os.Getenv("USERPROFILE") // windows
-}
-
 func checkLocal() bool {
 	ok := true
 	for _, cmd := range []string{"kubectl", "kustomize"} {
@@ -80,13 +61,7 @@ func checkLocal() bool {
 }
 
 func checkRemote() bool {
-	config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
-	if err != nil {
-		fmt.Println(`✗`, "kubernetes client initialization failed", err.Error())
-		return false
-	}
-
-	client, err := kubernetes.NewForConfig(config)
+	client, err := NewKubernetesClient()
 	if err != nil {
 		fmt.Println(`✗`, "kubernetes client initialization failed", err.Error())
 		return false
diff --git a/cmd/tk/main.go b/cmd/tk/main.go
index f4b7dd353eac4cc0ac6a2781e2f751277a4e6a95..e85426312870b2794b3b6249401ddcfc8f53f205 100644
--- a/cmd/tk/main.go
+++ b/cmd/tk/main.go
@@ -4,9 +4,13 @@ import (
 	"fmt"
 	"log"
 	"os"
+	"path/filepath"
 	"strings"
 
 	"github.com/spf13/cobra"
+	"k8s.io/client-go/kubernetes"
+	_ "k8s.io/client-go/plugin/pkg/client/auth"
+	"k8s.io/client-go/tools/clientcmd"
 )
 
 var VERSION = "0.0.1"
@@ -17,6 +21,20 @@ var rootCmd = &cobra.Command{
 	Version: VERSION,
 }
 
+var (
+	kubeconfig string
+)
+
+func init() {
+	if home := homeDir(); home != "" {
+		rootCmd.PersistentFlags().StringVarP(&kubeconfig, "kubeconfig", "", filepath.Join(home, ".kube", "config"),
+			"path to the kubeconfig file")
+	} else {
+		checkCmd.PersistentFlags().StringVarP(&kubeconfig, "kubeconfig", "", "",
+			"absolute path to the kubeconfig file")
+	}
+}
+
 func main() {
 	log.SetFlags(0)
 
@@ -27,3 +45,24 @@ func main() {
 		os.Exit(1)
 	}
 }
+
+func homeDir() string {
+	if h := os.Getenv("HOME"); h != "" {
+		return h
+	}
+	return os.Getenv("USERPROFILE") // windows
+}
+
+func NewKubernetesClient() (*kubernetes.Clientset, error) {
+	config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
+	if err != nil {
+		return nil, err
+	}
+
+	client, err := kubernetes.NewForConfig(config)
+	if err != nil {
+		return nil, err
+	}
+
+	return client, nil
+}