diff --git a/internal/pkg/core/common.go b/internal/pkg/core/common.go
index 2bdf630..7ee316a 100755
--- a/internal/pkg/core/common.go
+++ b/internal/pkg/core/common.go
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2023 Open Networking Foundation (ONF) and the ONF Contributors
+ * Copyright 2020-2024 Open Networking Foundation (ONF) and the ONF Contributors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index db394cb..3050e72 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2023 Open Networking Foundation (ONF) and the ONF Contributors
+ * Copyright 2020-2024 Open Networking Foundation (ONF) and the ONF Contributors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/internal/pkg/core/openonu.go b/internal/pkg/core/openonu.go
index 304cb21..9fa2597 100755
--- a/internal/pkg/core/openonu.go
+++ b/internal/pkg/core/openonu.go
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2023 Open Networking Foundation (ONF) and the ONF Contributors
+ * Copyright 2020-2024 Open Networking Foundation (ONF) and the ONF Contributors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/internal/pkg/core/openonuInterAdapter.go b/internal/pkg/core/openonuInterAdapter.go
index 11aad8c..d57f5f0 100644
--- a/internal/pkg/core/openonuInterAdapter.go
+++ b/internal/pkg/core/openonuInterAdapter.go
@@ -1,5 +1,5 @@
 /*
- * Copyright 2022-2023 Open Networking Foundation (ONF) and the ONF Contributors
+ * Copyright 2022-2024 Open Networking Foundation (ONF) and the ONF Contributors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-//Package core provides the utility for onu devices, flows and statistics
+// Package core provides the utility for onu devices, flows and statistics
 package core
 
 import (
@@ -30,49 +30,49 @@
 	"github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service"
 )
 
-//OpenONUACInterAdapter structure holds a reference to ONU adapter
+// OpenONUACInterAdapter structure holds a reference to ONU adapter
 type OpenONUACInterAdapter struct {
 	onuAdapter  *OpenONUAC
 	exitChannel chan struct{}
 }
 
-//NewOpenONUACAdapter returns a new instance of OpenONUACAdapter
+// NewOpenONUACAdapter returns a new instance of OpenONUACAdapter
 func NewOpenONUACAdapter(ctx context.Context, onuAdapter *OpenONUAC) *OpenONUACInterAdapter {
 	return &OpenONUACInterAdapter{onuAdapter: onuAdapter, exitChannel: make(chan struct{})}
 }
 
-//Start starts (logs) the adapter
+// Start starts (logs) the adapter
 func (oo *OpenONUACInterAdapter) Start(ctx context.Context) error {
 	logger.Info(ctx, "starting-openonu-inter-adapter")
 	return nil
 }
 
-//OnuIndication redirects the request the the core ONU adapter handler
+// OnuIndication redirects the request the the core ONU adapter handler
 func (oo *OpenONUACInterAdapter) OnuIndication(ctx context.Context, onuInd *ia.OnuIndicationMessage) (*empty.Empty, error) {
 	return oo.onuAdapter.OnuIndication(ctx, onuInd)
 }
 
-//OmciIndication redirects the request the the core ONU adapter handler
+// OmciIndication redirects the request the the core ONU adapter handler
 func (oo *OpenONUACInterAdapter) OmciIndication(ctx context.Context, msg *ia.OmciMessage) (*empty.Empty, error) {
 	return oo.onuAdapter.OmciIndication(ctx, msg)
 }
 
-//DownloadTechProfile redirects the request the the core ONU adapter handler
+// DownloadTechProfile redirects the request the the core ONU adapter handler
 func (oo *OpenONUACInterAdapter) DownloadTechProfile(ctx context.Context, tProfile *ia.TechProfileDownloadMessage) (*empty.Empty, error) {
 	return oo.onuAdapter.DownloadTechProfile(ctx, tProfile)
 }
 
-//DeleteGemPort redirects the request the the core ONU adapter handler
+// DeleteGemPort redirects the request the the core ONU adapter handler
 func (oo *OpenONUACInterAdapter) DeleteGemPort(ctx context.Context, gPort *ia.DeleteGemPortMessage) (*empty.Empty, error) {
 	return oo.onuAdapter.DeleteGemPort(ctx, gPort)
 }
 
-//DeleteTCont redirects the request the the core ONU adapter handler
+// DeleteTCont redirects the request the the core ONU adapter handler
 func (oo *OpenONUACInterAdapter) DeleteTCont(ctx context.Context, tConf *ia.DeleteTcontMessage) (*empty.Empty, error) {
 	return oo.onuAdapter.DeleteTCont(ctx, tConf)
 }
 
-//Stop terminates the session
+// Stop terminates the session
 func (oo *OpenONUACInterAdapter) Stop(ctx context.Context) error {
 	close(oo.exitChannel)
 	logger.Info(ctx, "openonu-inter-adapter-stopped")
diff --git a/internal/pkg/core/openonuimpl.go b/internal/pkg/core/openonuimpl.go
index 4d08426..add7431 100755
--- a/internal/pkg/core/openonuimpl.go
+++ b/internal/pkg/core/openonuimpl.go
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2023 Open Networking Foundation (ONF) and the ONF Contributors
+ * Copyright 2020-2024 Open Networking Foundation (ONF) and the ONF Contributors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-//Package core provides the utility for onu devices, flows and statistics
+// Package core provides the utility for onu devices, flows and statistics
 package core
 
 import (
@@ -85,7 +85,7 @@
 }
 */
 
-//suppose global methods per adapter ...
+// suppose global methods per adapter ...
 func mibDbVolatileDictImpl(ctx context.Context) error {
 	logger.Debug(ctx, "MibVolatileDict-called")
 	return errors.New("not_implemented")
