diff --git a/core/alarms.go b/core/alarms.go
index 6296123..2261b55 100644
--- a/core/alarms.go
+++ b/core/alarms.go
@@ -22,7 +22,7 @@
 	pb "github.com/opencord/voltha-bbsim/api"
 	"github.com/opencord/voltha-bbsim/common/logger"
 	"github.com/opencord/voltha-bbsim/device"
-	openolt "github.com/opencord/voltha-bbsim/protos"
+	openolt "github.com/opencord/voltha-protos/go/openolt"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
diff --git a/core/core_server.go b/core/core_server.go
index 6899d86..a8d9d52 100644
--- a/core/core_server.go
+++ b/core/core_server.go
@@ -33,7 +33,7 @@
 	"github.com/opencord/voltha-bbsim/common/logger"
 	"github.com/opencord/voltha-bbsim/device"
 	flowHandler "github.com/opencord/voltha-bbsim/flow"
-	openolt "github.com/opencord/voltha-bbsim/protos"
+	openolt "github.com/opencord/voltha-protos/go/openolt"
 	log "github.com/sirupsen/logrus"
 	"golang.org/x/sync/errgroup"
 	"google.golang.org/grpc"
@@ -331,9 +331,9 @@
 		return err
 	}
 
-	if state == onu.GetIntState(){
+	if state == onu.GetIntState() {
 		logger.WithFields(log.Fields{
-			"toState": device.ONUState[state],
+			"toState":      device.ONUState[state],
 			"currentState": device.ONUState[onu.GetIntState()],
 		}).Warn("Trying to update the state with the same state, ignoring this request")
 		return nil
diff --git a/core/eapol.go b/core/eapol.go
index c4dfe54..f14256d 100644
--- a/core/eapol.go
+++ b/core/eapol.go
@@ -42,7 +42,7 @@
 	EAP_SUCCESS
 )
 
-func (eap clientState) String() string  {
+func (eap clientState) String() string {
 	return [...]string{"EAP_START", "EAP_RESPID", "EAP_RESPCHA", "EAP_SUCCESS"}[eap]
 }
 
@@ -152,10 +152,10 @@
 			return errors.New("Failed to send EAPStart")
 		}
 		logger.WithFields(log.Fields{
-			"int_id": intfid,
-			"onu_id": onuid,
+			"int_id":  intfid,
+			"onu_id":  onuid,
 			"eapolIn": eapolIn,
-			"bytes": bytes,
+			"bytes":   bytes,
 		}).Debug("EAPStart Sent")
 		time.Sleep(30 * time.Second)
 	}
diff --git a/core/grpc_service.go b/core/grpc_service.go
index 8ac0faf..9640458 100644
--- a/core/grpc_service.go
+++ b/core/grpc_service.go
@@ -17,6 +17,7 @@
 package core
 
 import (
+	"github.com/opencord/voltha-protos/go/tech_profile"
 	"net"
 
 	"github.com/google/gopacket"
@@ -25,7 +26,7 @@
 	"github.com/opencord/voltha-bbsim/common/logger"
 	"github.com/opencord/voltha-bbsim/device"
 	flowHandler "github.com/opencord/voltha-bbsim/flow"
-	openolt "github.com/opencord/voltha-bbsim/protos"
+	openolt "github.com/opencord/voltha-protos/go/openolt"
 	log "github.com/sirupsen/logrus"
 	"golang.org/x/net/context"
 	"google.golang.org/grpc"
@@ -120,15 +121,27 @@
 	return new(openolt.Empty), nil
 }
 
-// CreateTconts method should handle Tcont creation
-func (s *Server) CreateTconts(c context.Context, tconts *openolt.Tconts) (*openolt.Empty, error) {
-	logger.Debug("OLT receives CreateTconts()")
+// CreateTrafficSchedulers method should handle TrafficScheduler creation
+func (s *Server) CreateTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
+	logger.Debug("OLT receives CreateTrafficSchedulers()")
 	return new(openolt.Empty), nil
 }
 
-// RemoveTconts method should handle t-cont removal
-func (s *Server) RemoveTconts(c context.Context, tconts *openolt.Tconts) (*openolt.Empty, error) {
-	logger.Debug("OLT receives RemoveTconts()")
+// RemoveTrafficSchedulers method should handle TrafficScheduler removal
+func (s *Server) RemoveTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*openolt.Empty, error) {
+	logger.Debug("OLT receives RemoveTrafficSchedulers()")
+	return new(openolt.Empty), nil
+}
+
+// CreateTrafficQueues method should handle TrafficQueues creation
+func (s *Server) CreateTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*openolt.Empty, error) {
+	logger.Debug("OLT receives CreateTrafficQueues()")
+	return new(openolt.Empty), nil
+}
+
+// RemoveTrafficQueues method should handle TrafficQueues removal
+func (s *Server) RemoveTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*openolt.Empty, error) {
+	logger.Debug("OLT receives RemoveTrafficQueues()")
 	return new(openolt.Empty), nil
 }
 
@@ -253,24 +266,23 @@
 			"c_tag": flow.Action.IVid,
 		}).Debug("OLT receives FlowAdd().")
 
-
 		// EAPOL flow
 		if flow.Classifier.EthType == uint32(layers.EthernetTypeEAPOL) {
 			logger.WithFields(log.Fields{
-				"Classifier.OVid": flow.Classifier.OVid,
-				"Classifier.IVid": flow.Classifier.IVid,
+				"Classifier.OVid":    flow.Classifier.OVid,
+				"Classifier.IVid":    flow.Classifier.IVid,
 				"Classifier.EthType": flow.Classifier.EthType,
 				"Classifier.SrcPort": flow.Classifier.SrcPort,
 				"Classifier.DstPort": flow.Classifier.DstPort,
-				"Action.OVid": flow.Action.OVid,
-				"Action.IVid": flow.Action.IVid,
-				"IntfID": flow.AccessIntfId,
-				"OltID": s.Olt.ID,
-				"OnuID": flow.OnuId,
-				"FlowId": flow.FlowId,
-				"UniID": flow.UniId,
-				"PortNo": flow.PortNo,
-				"FlowType": flow.FlowType,
+				"Action.OVid":        flow.Action.OVid,
+				"Action.IVid":        flow.Action.IVid,
+				"IntfID":             flow.AccessIntfId,
+				"OltID":              s.Olt.ID,
+				"OnuID":              flow.OnuId,
+				"FlowId":             flow.FlowId,
+				"UniID":              flow.UniId,
+				"PortNo":             flow.PortNo,
+				"FlowType":           flow.FlowType,
 			}).Debug("OLT receives EAPOL flow")
 
 			if flow.Classifier.OVid == 4091 {
diff --git a/core/omci.go b/core/omci.go
index b0e6bbb..857e98e 100644
--- a/core/omci.go
+++ b/core/omci.go
@@ -21,7 +21,7 @@
 
 	omci "github.com/opencord/omci-sim"
 	"github.com/opencord/voltha-bbsim/common/logger"
-	openolt "github.com/opencord/voltha-bbsim/protos"
+	openolt "github.com/opencord/voltha-protos/go/openolt"
 )
 
 // RunOmciResponder starts a go routine to process/respond to OMCI messages from VOLTHA
diff --git a/core/openolt_service.go b/core/openolt_service.go
index a56b75c..7c7f498 100644
--- a/core/openolt_service.go
+++ b/core/openolt_service.go
@@ -20,7 +20,7 @@
 
 	"github.com/opencord/voltha-bbsim/common/logger"
 	"github.com/opencord/voltha-bbsim/device"
-	openolt "github.com/opencord/voltha-bbsim/protos"
+	openolt "github.com/opencord/voltha-protos/go/openolt"
 )
 
 func sendOltIndUp(stream openolt.Openolt_EnableIndicationServer, olt *device.Olt) error {
