diff --git a/internal/pkg/commands/command.go b/internal/pkg/commands/command.go
index 6b5b56b..d839907 100644
--- a/internal/pkg/commands/command.go
+++ b/internal/pkg/commands/command.go
@@ -95,6 +95,7 @@
 		Server string `short:"s" long:"server" default:"" value-name:"SERVER:PORT" description:"IP/Host and port of VOLTHA"`
 		Kafka  string `short:"k" long:"kafka" default:"" value-name:"SERVER:PORT" description:"IP/Host and port of Kafka"`
 		// Do not set the default for the API version here, else it will override the value read in the config
+		// nolint: staticcheck
 		ApiVersion     string `short:"a" long:"apiversion" description:"API version" value-name:"VERSION" choice:"v1" choice:"v2" choice:"v3"`
 		Debug          bool   `short:"d" long:"debug" description:"Enable debug mode"`
 		UseTLS         bool   `long:"tls" description:"Use TLS"`
@@ -113,8 +114,9 @@
 )
 
 type OutputOptions struct {
-	Format    string `long:"format" value-name:"FORMAT" default:"" description:"Format to use to output structured data"`
-	Quiet     bool   `short:"q" long:"quiet" description:"Output only the IDs of the objects"`
+	Format string `long:"format" value-name:"FORMAT" default:"" description:"Format to use to output structured data"`
+	Quiet  bool   `short:"q" long:"quiet" description:"Output only the IDs of the objects"`
+	// nolint: staticcheck
 	OutputAs  string `short:"o" long:"outputas" default:"table" choice:"table" choice:"json" choice:"yaml" description:"Type of output to generate"`
 	NameLimit int    `short:"l" long:"namelimit" default:"-1" value-name:"LIMIT" description:"Limit the depth (length) in the table column name"`
 }
@@ -126,8 +128,9 @@
 }
 
 type OutputOptionsJson struct {
-	Format    string `long:"format" value-name:"FORMAT" default:"" description:"Format to use to output structured data"`
-	Quiet     bool   `short:"q" long:"quiet" description:"Output only the IDs of the objects"`
+	Format string `long:"format" value-name:"FORMAT" default:"" description:"Format to use to output structured data"`
+	Quiet  bool   `short:"q" long:"quiet" description:"Output only the IDs of the objects"`
+	// nolint: staticcheck
 	OutputAs  string `short:"o" long:"outputas" default:"json" choice:"table" choice:"json" choice:"yaml" description:"Type of output to generate"`
 	NameLimit int    `short:"l" long:"namelimit" default:"-1" value-name:"LIMIT" description:"Limit the depth (length) in the table column name"`
 }
diff --git a/internal/pkg/commands/events.go b/internal/pkg/commands/events.go
index deacb79..a9d20c8 100644
--- a/internal/pkg/commands/events.go
+++ b/internal/pkg/commands/events.go
@@ -41,7 +41,8 @@
 )
 
 type EventListenOpts struct {
-	Format   string `long:"format" value-name:"FORMAT" default:"" description:"Format to use to output structured data"`
+	Format string `long:"format" value-name:"FORMAT" default:"" description:"Format to use to output structured data"`
+	// nolint: staticcheck
 	OutputAs string `short:"o" long:"outputas" default:"table" choice:"table" choice:"json" choice:"yaml" description:"Type of output to generate"`
 	Filter   string `short:"f" long:"filter" default:"" value-name:"FILTER" description:"Only display results that match filter"`
 	Follow   bool   `short:"F" long:"follow" description:"Continue to consume until CTRL-C is pressed"`
@@ -194,17 +195,17 @@
 	kpiIntf, err := m.TryGetFieldByName("kpi_event2")
 	if err == nil {
 		kpi, ok := kpiIntf.(*dynamic.Message)
-		if ok == true && kpi != nil {
+		if ok && kpi != nil {
 			sliceListIntf, err := kpi.TryGetFieldByName("slice_data")
 			if err == nil {
 				sliceIntf, ok := sliceListIntf.([]interface{})
-				if ok == true && len(sliceIntf) > 0 {
+				if ok && len(sliceIntf) > 0 {
 					slice, ok := sliceIntf[0].(*dynamic.Message)
-					if ok == true && slice != nil {
+					if ok && slice != nil {
 						metadataIntf, err := slice.TryGetFieldByName("metadata")
 						if err == nil {
 							metadata, ok := metadataIntf.(*dynamic.Message)
-							if ok == true && metadata != nil {
+							if ok && metadata != nil {
 								deviceIdIntf, err := metadataIntf.(*dynamic.Message).TryGetFieldByName("device_id")
 								if err == nil {
 									device_ids[deviceIdIntf.(string)] = slice
@@ -227,7 +228,7 @@
 	deviceEventIntf, err := m.TryGetFieldByName("device_event")
 	if err == nil {
 		deviceEvent, ok := deviceEventIntf.(*dynamic.Message)
-		if ok == true && deviceEvent != nil {
+		if ok && deviceEvent != nil {
 			deviceEventNameIntf, err := deviceEvent.TryGetFieldByName("device_event_name")
 			if err == nil {
 				deviceEventName, ok := deviceEventNameIntf.(string)
@@ -247,14 +248,14 @@
 
 	device_id_keys := make([]string, len(device_ids))
 	i := 0
-	for k, _ := range device_ids {
+	for k := range device_ids {
 		device_id_keys[i] = k
 		i++
 	}
 
 	title_keys := make([]string, len(titles))
 	i = 0
-	for k, _ := range titles {
+	for k := range titles {
 		title_keys[i] = k
 		i++
 	}
@@ -312,6 +313,9 @@
 	// This is a very long-winded way to get a message descriptor
 
 	descriptor, err := GetDescriptorSource()
+	if err != nil {
+		return nil, err
+	}
 
 	// get the symbol for voltha.events
 	eventSymbol, err := descriptor.FindSymbol("voltha.Event")
@@ -469,10 +473,11 @@
 
 					// Print it
 					if options.ShowBody {
-						PrintMessage(grpcurlFormatter, eventMessage, msg.Value)
+						if err := PrintMessage(grpcurlFormatter, eventMessage, msg.Value); err != nil {
+							log.Printf("%v\n", err)
+						}
 					} else {
-						err := PrintEventHeader(options.OutputAs, outputFormat, hdr)
-						if err != nil {
+						if err := PrintEventHeader(options.OutputAs, outputFormat, hdr); err != nil {
 							log.Printf("%v\n", err)
 						}
 					}
