diff --git a/core/omci.go b/core/omci.go
index f4147dd..25701b0 100644
--- a/core/omci.go
+++ b/core/omci.go
@@ -96,6 +96,18 @@
 	pptpInstance uint8
 }
 
+type OmciMsgHandler func(class OmciClass, content OmciContent, key OnuKey) []byte
+
+var Handlers = map[OmciMsgType]OmciMsgHandler{
+	MibReset:      mibReset,
+	MibUpload:     mibUpload,
+	MibUploadNext: mibUploadNext,
+	Set:           set,
+	Create:        create,
+	Get:           get,
+	GetAllAlarms:  getAllAlarms,
+}
+
 var Onus = map[OnuKey]*OnuState{}
 
 func OmciRun(omciOut chan openolt.OmciMsg, omciIn chan openolt.OmciIndication) {
@@ -114,26 +126,14 @@
 		if _, ok := Onus[key]; !ok {
 			Onus[key] = NewOnuState()
 		}
-		switch msgType {
-		case MibReset:
-			resp.Pkt = mibReset()
-		case 13:
-			resp.Pkt = mibUpload()
-		case 14:
-			resp.Pkt = mibUploadNext(Onus[key])
-		case 8:
-			resp.Pkt = set()
-		case 4:
-			resp.Pkt = create(class, content, key)
-		case 9:
-			resp.Pkt = get()
-		case 11:
-			resp.Pkt = getAllAlarms()
-		default:
-			logger.Warn("Omci msg type not handled: %d", msgType)
+
+		if _, ok := Handlers[msgType]; !ok {
+			logger.Warn("Ignore omci msg (msgType %d not handled)", msgType)
 			continue
 		}
 
+		resp.Pkt = Handlers[msgType](class, content, key)
+
 		resp.Pkt[0] = byte(transactionId >> 8)
 		resp.Pkt[1] = byte(transactionId & 0xFF)
 		resp.Pkt[2] = 0x2<<4 | byte(msgType)
@@ -177,7 +177,7 @@
 	return &OnuState{gemPortId: 0, mibUploadCtr: 0, uniGInstance: 1, pptpInstance: 1}
 }
 
-func mibReset() []byte {
+func mibReset(class OmciClass, content OmciContent, key OnuKey) []byte {
 	var pkt []byte
 
 	logger.Debug("Omci MibReset")
@@ -192,7 +192,7 @@
 	return pkt
 }
 
-func mibUpload() []byte {
+func mibUpload(class OmciClass, content OmciContent, key OnuKey) []byte {
 	var pkt []byte
 
 	logger.Debug("Omci MibUpload")
@@ -210,11 +210,13 @@
 	return pkt
 }
 
-func mibUploadNext(state *OnuState) []byte {
+func mibUploadNext(class OmciClass, content OmciContent, key OnuKey) []byte {
 	var pkt []byte
 
 	logger.Debug("Omci MibUploadNext")
 
+	state := Onus[key]
+
 	switch state.mibUploadCtr {
 	case 0:
 		// ANI-G
@@ -255,7 +257,7 @@
 	return pkt
 }
 
-func set() []byte {
+func set(class OmciClass, content OmciContent, key OnuKey) []byte {
 	var pkt []byte
 
 	pkt = []byte{
@@ -296,7 +298,7 @@
 	return pkt
 }
 
-func get() []byte {
+func get(class OmciClass, content OmciContent, key OnuKey) []byte {
 	var pkt []byte
 
 	pkt = []byte{
@@ -312,7 +314,7 @@
 	return pkt
 }
 
-func getAllAlarms() []byte {
+func getAllAlarms(class OmciClass, content OmciContent, key OnuKey) []byte {
 	var pkt []byte
 
 	pkt = []byte{
