diff --git a/internal/pkg/common/omci_cc.go b/internal/pkg/common/omci_cc.go
index e1115d3..c7bda8b 100755
--- a/internal/pkg/common/omci_cc.go
+++ b/internal/pkg/common/omci_cc.go
@@ -53,6 +53,7 @@
 // UnusedTcontAllocID - TODO: add comment
 const UnusedTcontAllocID = uint16(0xFFFF) //common unused AllocId for G.984 and G.987 systems
 
+const cOmciDeviceIdentifierPos = 3
 const cOmciBaseMessageTrailerLen = 40
 
 // tOmciReceiveError - enum type for detected problems/errors in the received OMCI message (format)
@@ -282,41 +283,65 @@
 
 // ReceiveMessage - Rx handler for onu messages
 //    e.g. would call ReceiveOnuMessage() in case of TID=0 or Action=test ...
+// nolint: gocyclo
 func (oo *OmciCC) ReceiveMessage(ctx context.Context, rxMsg []byte) error {
 	//logger.Debugw(ctx,"cc-receive-omci-message", log.Fields{"RxOmciMessage-x2s": hex.EncodeToString(rxMsg)})
-	if len(rxMsg) >= 44 { // then it should normally include the BaseFormat trailer Len
-		// NOTE: autocorrection only valid for OmciBaseFormat, which is not specifically verified here!!!
-		//  (an extendedFormat message could be destroyed this way!)
-		trailerLenData := rxMsg[42:44]
-		trailerLen := binary.BigEndian.Uint16(trailerLenData)
-		//logger.Debugw(ctx,"omci-received-trailer-len", log.Fields{"Length": trailerLen})
-		if trailerLen != cOmciBaseMessageTrailerLen { // invalid base Format entry -> autocorrect
-			binary.BigEndian.PutUint16(rxMsg[42:44], cOmciBaseMessageTrailerLen)
-			if oo.rxOmciFrameError != cOmciMessageReceiveErrorTrailerLen {
-				//do just one error log, expectation is: if seen once it should appear regularly - avoid to many log entries
-				logger.Errorw(ctx, "wrong omci-message trailer length: trailer len auto-corrected",
-					log.Fields{"trailer-length": trailerLen, "device-id": oo.deviceID})
-				oo.rxOmciFrameError = cOmciMessageReceiveErrorTrailerLen
-			}
+
+	if len(rxMsg) < 10 {
+		logger.Errorw(ctx, "rxOmciMessage has wrong length in general - abort",
+			log.Fields{"Length": len(rxMsg), "device-id": oo.deviceID})
+		if len(rxMsg) > 0 {
+			oo.printRxMessage(ctx, rxMsg)
 		}
-	} else if len(rxMsg) >= cOmciBaseMessageTrailerLen { // workaround for Adtran OLT Sim, which currently does not send trailer bytes at all!
-		// NOTE: autocorrection only valid for OmciBaseFormat, which is not specifically verified here!!!
-		//  (an extendedFormat message could be destroyed this way!)
-		// extend/overwrite with trailer
-		trailer := make([]byte, 8)
-		binary.BigEndian.PutUint16(trailer[2:], cOmciBaseMessageTrailerLen) //set the defined baseline length
-		rxMsg = append(rxMsg[:cOmciBaseMessageTrailerLen], trailer...)
-		if oo.rxOmciFrameError != cOmciMessageReceiveErrorMissTrailer {
-			//do just one error log, expectation is: if seen once it should appear regularly - avoid to many log entries
-			logger.Errorw(ctx, "omci-message to short to include trailer len: trailer auto-corrected (added)",
-				log.Fields{"message-length": len(rxMsg), "device-id": oo.deviceID})
-			oo.rxOmciFrameError = cOmciMessageReceiveErrorMissTrailer
+		return fmt.Errorf("rxOmciMessage has wrong length in general - abort %s", oo.deviceID)
+	}
+	if rxMsg[cOmciDeviceIdentifierPos] == byte(omci.BaselineIdent) {
+		if len(rxMsg) >= 44 { // then it should normally include the BaseFormat trailer Len
+			// NOTE: autocorrection only valid for OmciBaseFormat, which is not specifically verified here!!!
+			//  (an extendedFormat message could be destroyed this way!)
+			trailerLenData := rxMsg[42:44]
+			trailerLen := binary.BigEndian.Uint16(trailerLenData)
+			//logger.Debugw(ctx,"omci-received-trailer-len", log.Fields{"Length": trailerLen})
+			if trailerLen != cOmciBaseMessageTrailerLen { // invalid base Format entry -> autocorrect
+				binary.BigEndian.PutUint16(rxMsg[42:44], cOmciBaseMessageTrailerLen)
+				if oo.rxOmciFrameError != cOmciMessageReceiveErrorTrailerLen {
+					//do just one error log, expectation is: if seen once it should appear regularly - avoid to many log entries
+					logger.Errorw(ctx, "wrong omci-message trailer length: trailer len auto-corrected",
+						log.Fields{"trailer-length": trailerLen, "device-id": oo.deviceID})
+					oo.rxOmciFrameError = cOmciMessageReceiveErrorTrailerLen
+				}
+			}
+		} else if len(rxMsg) >= cOmciBaseMessageTrailerLen { // workaround for Adtran OLT Sim, which currently does not send trailer bytes at all!
+			// NOTE: autocorrection only valid for OmciBaseFormat, which is not specifically verified here!!!
+			//  (an extendedFormat message could be destroyed this way!)
+			// extend/overwrite with trailer
+			trailer := make([]byte, 8)
+			binary.BigEndian.PutUint16(trailer[2:], cOmciBaseMessageTrailerLen) //set the defined baseline length
+			rxMsg = append(rxMsg[:cOmciBaseMessageTrailerLen], trailer...)
+			if oo.rxOmciFrameError != cOmciMessageReceiveErrorMissTrailer {
+				//do just one error log, expectation is: if seen once it should appear regularly - avoid to many log entries
+				logger.Errorw(ctx, "omci-message to short to include trailer len: trailer auto-corrected (added)",
+					log.Fields{"message-length": len(rxMsg), "device-id": oo.deviceID})
+				oo.rxOmciFrameError = cOmciMessageReceiveErrorMissTrailer
+			}
+		} else {
+			logger.Errorw(ctx, "received omci-message too small for OmciBaseFormat - abort",
+				log.Fields{"Length": len(rxMsg), "device-id": oo.deviceID})
+			oo.printRxMessage(ctx, rxMsg)
+			return fmt.Errorf("rxOmciMessage too small for BaseFormat %s", oo.deviceID)
+		}
+	} else if rxMsg[cOmciDeviceIdentifierPos] == byte(omci.ExtendedIdent) {
+		if len(rxMsg) > 1980 {
+			logger.Errorw(ctx, "rxOmciMessage has wrong length for OmciExtendedFormat - abort",
+				log.Fields{"Length": len(rxMsg), "device-id": oo.deviceID})
+			oo.printRxMessage(ctx, rxMsg)
+			return fmt.Errorf("rxOmciMessage has wrong length for OmciExtendedFormat %s", oo.deviceID)
 		}
 	} else {
-		logger.Errorw(ctx, "received omci-message too small for OmciBaseFormat - abort",
+		logger.Errorw(ctx, "rxOmciMessage has wrong Device Identifier - abort",
 			log.Fields{"Length": len(rxMsg), "device-id": oo.deviceID})
 		oo.printRxMessage(ctx, rxMsg)
-		return fmt.Errorf("rxOmciMessage too small for BaseFormat %s", oo.deviceID)
+		return fmt.Errorf("rxOmciMessage has wrong Device Identifier %s", oo.deviceID)
 	}
 	decodeOptions := gopacket.DecodeOptions{
 		Lazy:   true,
@@ -530,7 +555,7 @@
 	receiveCallbackPair CallbackPair) error {
 
 	if timeout != 0 {
-		logger.Debugw(ctx, "register-response-callback:", log.Fields{"for TansCorrId": receiveCallbackPair.CbKey})
+		logger.Debugw(ctx, "register-response-callback:", log.Fields{"for TransCorrId": receiveCallbackPair.CbKey})
 		oo.mutexRxSchedMap.Lock()
 		// it could be checked, if the callback key is already registered - but simply overwrite may be acceptable ...
 		oo.rxSchedulerMap[receiveCallbackPair.CbKey] = receiveCallbackPair.CbEntry
@@ -587,6 +612,11 @@
 	for oo.highPrioTxQueue.Len() > 0 {
 		queueElement := oo.highPrioTxQueue.Front() // First element
 		if err := oo.sendOMCIRequest(ctx, queueElement.Value.(OmciTransferStructure)); err != nil {
+			// Element will be removed from the queue regardless of the send success, to prevent
+			// an accumulation of send requests for the same message in the event of an error.
+			// In this case, resend attempts for the message are ensured by our retry
+			// mechanism after omci-timeout.
+			oo.highPrioTxQueue.Remove(queueElement) // Dequeue
 			return err
 		}
 		oo.highPrioTxQueue.Remove(queueElement) // Dequeue
@@ -602,12 +632,22 @@
 		aOmciTxReq := queueElement.Value.(OmciTransferStructure)
 		if aOmciTxReq.OnuSwWindow != nil {
 			if err := oo.sendOnuSwSectionsOfWindow(ctx, aOmciTxReq); err != nil {
+				// Element will be removed from the queue regardless of the send success, to prevent
+				// an accumulation of send requests for the same message in the event of an error.
+				// In this case, resend attempts for the message are ensured by our retry
+				// mechanism after omci-timeout.
+				oo.lowPrioTxQueue.Remove(queueElement) // Dequeue
 				oo.mutexLowPrioTxQueue.Unlock()
 				return err
 			}
 		} else {
 			err := oo.sendOMCIRequest(ctx, queueElement.Value.(OmciTransferStructure))
 			if err != nil {
+				// Element will be removed from the queue regardless of the send success, to prevent
+				// an accumulation of send requests for the same message in the event of an error.
+				// In this case, resend attempts for the message are ensured by our retry
+				// mechanism after omci-timeout.
+				oo.lowPrioTxQueue.Remove(queueElement) // Dequeue
 				oo.mutexLowPrioTxQueue.Unlock()
 				return err
 			}
@@ -712,10 +752,11 @@
 		TransactionID: tid,
 		MessageType:   msgType,
 	}
-	return serializeOmciLayer(ctx, omciLayer, request)
+	return SerializeOmciLayer(ctx, omciLayer, request)
 }
 
-func serializeOmciLayer(ctx context.Context, aOmciLayer *omci.OMCI, aRequest gopacket.SerializableLayer) ([]byte, error) {
+// SerializeOmciLayer - TODO: add comment
+func SerializeOmciLayer(ctx context.Context, aOmciLayer *omci.OMCI, aRequest gopacket.SerializableLayer) ([]byte, error) {
 	var options gopacket.SerializeOptions
 	options.FixLengths = true
 
@@ -960,7 +1001,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize GalEnetProfile create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1009,7 +1050,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize ONU2-G set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1064,7 +1105,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize MBSP create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1122,7 +1163,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize MBPCD create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1182,7 +1223,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize EVTOCD create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1228,7 +1269,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize ONU-G set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1274,7 +1315,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize PPTPEthUni-Set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1368,7 +1409,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VEIP-Set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1413,7 +1454,7 @@
 			logger.Errorf(ctx, "Cannot encode instance for get-request", log.Fields{"meClassIDName": meClassIDName, "Err": err, "device-id": oo.deviceID})
 			return nil, err
 		}
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize get-request", log.Fields{"meClassIDName": meClassIDName, "Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -1501,7 +1542,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize .1pMapper create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1545,7 +1586,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize MBPCD create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1589,7 +1630,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize GemNCTP create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1632,7 +1673,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize GemNCTP set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1676,7 +1717,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize GemIwTp create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1718,7 +1759,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize TCont set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1760,7 +1801,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize PrioQueue set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1802,7 +1843,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize 1PMapper set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1849,7 +1890,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VTFD create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1895,7 +1936,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VTFD set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1939,7 +1980,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize EVTOCD create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1981,7 +2022,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize EVTOCD set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2023,7 +2064,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize EVTOCD delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2070,7 +2111,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VTFD delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2108,7 +2149,7 @@
 			logger.Errorw(ctx, "Cannot encode TD for create", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
 		}
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize TD create", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2144,7 +2185,7 @@
 			logger.Errorw(ctx, "Cannot encode TD for set", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
 		}
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize TD set", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2182,7 +2223,7 @@
 			logger.Errorw(ctx, "Cannot encode TD for delete", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
 		}
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize TD delete", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2226,7 +2267,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize GemIwTp delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2273,7 +2314,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize GemNCtp delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2320,7 +2361,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize .1pMapper delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2367,7 +2408,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize MBPCD delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2409,7 +2450,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize MulticastGEMIWTP create", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2448,7 +2489,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize MulticastGEMIWTP create", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2488,7 +2529,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize MulticastOperationProfile create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2530,7 +2571,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize MulticastOperationProfile create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2572,7 +2613,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize MulticastSubConfigInfo create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2614,7 +2655,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoipVoiceCTP create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2656,7 +2697,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoipVoiceCTP set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2702,7 +2743,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoipVoiceCTP delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2745,7 +2786,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoipMediaProfile create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2787,7 +2828,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoipMediaProfile set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2830,7 +2871,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoipMediaProfile delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2873,7 +2914,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoiceServiceProfile create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2915,7 +2956,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoiceServiceProfile set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2958,7 +2999,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoiceServiceProfile delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3001,7 +3042,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize SIPUserData create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3043,7 +3084,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize SIPUserData set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3086,7 +3127,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize SIPUserData delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3129,7 +3170,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoipApplicationServiceProfile create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3171,7 +3212,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize VoipApplicationServiceProfile set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3214,7 +3255,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize SIPVoipApplicationServiceProfile delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3257,7 +3298,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize SIPAgentConfigData create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3299,7 +3340,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize SIPAgentConfigData set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3342,7 +3383,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize SIPAgentConfigData delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3385,7 +3426,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize TCPUDPConfigData create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3427,7 +3468,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize TCPUDPConfigData set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3470,7 +3511,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize TCPUDPConfigData delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3513,7 +3554,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize IPHostConfigData create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3555,7 +3596,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize IPHostConfigData set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3598,7 +3639,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize IPHostConfigData delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3641,7 +3682,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize RTPProfileData create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3683,7 +3724,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize RTPProfileData set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3726,7 +3767,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize RTPProfileData delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3769,7 +3810,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize NetworkDialPlanTable create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3811,7 +3852,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize NetworkDialPlanTable set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3854,7 +3895,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize NetworkDialPlanTable delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3905,7 +3946,7 @@
 		Second: uint8(utcTime.Second()),
 	}
 
-	pkt, err := serializeOmciLayer(ctx, omciLayer, request)
+	pkt, err := SerializeOmciLayer(ctx, omciLayer, request)
 	if err != nil {
 		logger.Errorw(ctx, "Cannot serialize synchronize time request", log.Fields{"Err": err,
 			"device-id": oo.deviceID})
@@ -3956,7 +3997,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize ethernet frame performance monitoring history data ME",
 				log.Fields{"Err": err, "device-id": oo.deviceID, "upstream": upstream, "create": create, "InstId": strconv.FormatInt(int64(entityID), 16)})
@@ -4009,7 +4050,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize ethernet uni history data ME",
 				log.Fields{"Err": err, "device-id": oo.deviceID, "create": create, "InstId": strconv.FormatInt(int64(entityID), 16)})
@@ -4062,7 +4103,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize fec history data ME",
 				log.Fields{"Err": err, "device-id": oo.deviceID, "create": create, "InstId": strconv.FormatInt(int64(entityID), 16)})
@@ -4115,7 +4156,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "Cannot serialize gemport history data ME",
 				log.Fields{"Err": err, "device-id": oo.deviceID, "create": create, "InstId": strconv.FormatInt(int64(entityID), 16)})
@@ -4847,7 +4888,7 @@
 			return nil, err
 		}
 
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "cannot-serialize-ethernet-frame-extended-pm-me",
 				log.Fields{"err": err, "device-id": oo.deviceID, "upstream": upstream, "create": create, "inst-id": strconv.FormatInt(int64(entityID), 16)})
@@ -4918,7 +4959,7 @@
 				log.Fields{"err": err, "device-id": oo.deviceID, "inst-id": strconv.FormatInt(int64(entityID), 16)})
 			return nil, err
 		}
-		pkt, err := serializeOmciLayer(ctx, omciLayer, msgLayer)
+		pkt, err := SerializeOmciLayer(ctx, omciLayer, msgLayer)
 		if err != nil {
 			logger.Errorw(ctx, "cannot-serialize-ethernet-frame-extended-pm-me-set-msg",
 				log.Fields{"err": err, "device-id": oo.deviceID, "inst-id": strconv.FormatInt(int64(entityID), 16)})
