diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/utils/GrpcNbMeterServiceUtil.java b/incubator/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/meter/MeterProtoTranslator.java
similarity index 97%
rename from incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/utils/GrpcNbMeterServiceUtil.java
rename to incubator/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/meter/MeterProtoTranslator.java
index 43c4908..85f0a97 100644
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/utils/GrpcNbMeterServiceUtil.java
+++ b/incubator/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/meter/MeterProtoTranslator.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.grpc.nb.utils;
+package org.onosproject.incubator.protobuf.models.net.meter;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -45,8 +45,8 @@
  * gRPC message conversion related utilities for meter service.
  */
 @Beta
-public final class GrpcNbMeterServiceUtil {
-    private static final Logger log = LoggerFactory.getLogger(GrpcNbMeterServiceUtil.class);
+public final class MeterProtoTranslator {
+    private static final Logger log = LoggerFactory.getLogger(MeterProtoTranslator.class);
 
     /**
      * Translates gRPC ApplicationId to {@link ApplicationId}.
@@ -292,6 +292,6 @@
     }
 
     // Utility class not intended for instantiation.
-    private GrpcNbMeterServiceUtil() {
+    private MeterProtoTranslator() {
     }
 }
diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/net/meter/package-info.java b/incubator/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/meter/package-info.java
similarity index 83%
rename from incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/net/meter/package-info.java
rename to incubator/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/meter/package-info.java
index 3b63c95..a90c429 100644
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/net/meter/package-info.java
+++ b/incubator/protobuf/models/src/main/java/org/onosproject/incubator/protobuf/models/net/meter/package-info.java
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 /**
- * gRPC server implementations for northbound services.
+ * Utilities to handle ProtoBuf version of ONOS meter models.
  */
-package org.onosproject.grpc.nb.net.meter;
\ No newline at end of file
+package org.onosproject.incubator.protobuf.models.net.meter;
\ No newline at end of file
diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/app/package-info.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/app/package-info.java
deleted file mode 100644
index b5cd387..0000000
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/app/package-info.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * gRPC server implementations for northbound services.
- */
-package org.onosproject.grpc.nb.app;
\ No newline at end of file
diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/package-info.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/package-info.java
deleted file mode 100644
index 9701cab..0000000
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * gRPC server implementations for northbound services.
- */
-package org.onosproject.grpc.nb;
\ No newline at end of file
diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/utils/package-info.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/utils/package-info.java
deleted file mode 100644
index 341744c..0000000
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/utils/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * A package contains a set of utilities that are used to convert gRPC model
- * object to ONOS data model object.
- */
-package org.onosproject.grpc.nb.utils;
\ No newline at end of file
diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/app/GrpcNbApplicationService.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java
similarity index 97%
rename from incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/app/GrpcNbApplicationService.java
rename to incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java
index 4bc5a31..9bbd813 100644
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/app/GrpcNbApplicationService.java
+++ b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbApplicationService.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.onosproject.grpc.nb.app;
+package org.onosproject.incubator.protobuf.services.nb;
 
 import com.google.common.annotations.Beta;
 import io.grpc.stub.StreamObserver;
@@ -27,6 +27,7 @@
 import org.onosproject.core.Application;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.grpc.nb.app.ApplicationServiceGrpc.ApplicationServiceImplBase;
+import org.onosproject.grpc.nb.app.ApplicationServiceNb;
 import org.onosproject.grpc.nb.app.ApplicationServiceNb.getApplicationReply;
 import org.onosproject.grpc.nb.app.ApplicationServiceNb.getApplicationsReply;
 import org.onosproject.grpc.nb.app.ApplicationServiceNb.getIdReply;
diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/net/meter/GrpcNbMeterService.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMeterService.java
similarity index 87%
rename from incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/net/meter/GrpcNbMeterService.java
rename to incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMeterService.java
index 64ced8a..c30accd 100644
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/grpc/nb/net/meter/GrpcNbMeterService.java
+++ b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbMeterService.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package org.onosproject.grpc.nb.net.meter;
+package org.onosproject.incubator.protobuf.services.nb;
 
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onosproject.net.meter.MeterService;
-import org.onosproject.grpc.nb.utils.GrpcNbMeterServiceUtil;
+import org.onosproject.incubator.protobuf.models.net.meter.MeterProtoTranslator;
 
 import org.onosproject.grpc.nb.net.meter.MeterServiceGrpc.MeterServiceImplBase;
 import org.onosproject.grpc.nb.net.meter.MeterServiceNbProto.submitRequest;
@@ -46,7 +46,7 @@
 /**
  * A server that provides access to the methods exposed by {@link MeterService}.
  * TODO this requires major refactoring, translation should be delegated to calls to
- * TODO{@link GrpcNbMeterServiceUtil}.
+ * TODO{@link MeterProtoTranslator}.
  */
 @Beta
 @Component(immediate = true)
@@ -75,8 +75,8 @@
         public void submit(submitRequest request,
                            StreamObserver<submitReply> responseObserver) {
             submitReply.Builder replyBuilder = submitReply.newBuilder();
-            Meter meter = meterService.submit(GrpcNbMeterServiceUtil.translate(request.getMeter()));
-            responseObserver.onNext(replyBuilder.setSubmitMeter(GrpcNbMeterServiceUtil.translate(meter)).build());
+            Meter meter = meterService.submit(MeterProtoTranslator.translate(request.getMeter()));
+            responseObserver.onNext(replyBuilder.setSubmitMeter(MeterProtoTranslator.translate(meter)).build());
             responseObserver.onCompleted();
         }
 
@@ -84,7 +84,7 @@
         public void withdraw(withdrawRequest request,
                              StreamObserver<withdrawReply> responseObserver) {
             withdrawReply.Builder replyBuilder = withdrawReply.newBuilder();
-            meterService.withdraw(GrpcNbMeterServiceUtil.translate(request.getMeter()),
+            meterService.withdraw(MeterProtoTranslator.translate(request.getMeter()),
                     MeterId.meterId(request.getMeterId()));
             responseObserver.onNext(replyBuilder.build());
             responseObserver.onCompleted();
@@ -96,7 +96,7 @@
             getMeterReply.Builder replyBuilder = getMeterReply.newBuilder();
             Meter meter = meterService.getMeter(DeviceId.deviceId(request.getDeviceId()),
                     MeterId.meterId(request.getMeterId()));
-            responseObserver.onNext(replyBuilder.setMeter(GrpcNbMeterServiceUtil.translate(meter)).build());
+            responseObserver.onNext(replyBuilder.setMeter(MeterProtoTranslator.translate(meter)).build());
             responseObserver.onCompleted();
         }
 
@@ -105,7 +105,7 @@
                                  StreamObserver<getAllMetersReply> responseObserver) {
             getAllMetersReply.Builder replyBuilder = getAllMetersReply.newBuilder();
             meterService.getAllMeters().forEach(d -> {
-                replyBuilder.addMeters(GrpcNbMeterServiceUtil.translate(d));
+                replyBuilder.addMeters(MeterProtoTranslator.translate(d));
             });
             responseObserver.onNext(replyBuilder.build());
             responseObserver.onCompleted();
@@ -116,7 +116,7 @@
                               StreamObserver<getMetersReply> responseObserver) {
             getMetersReply.Builder replyBuilder = getMetersReply.newBuilder();
             meterService.getMeters(DeviceId.deviceId(request.getDeviceId())).forEach(d -> {
-                replyBuilder.addMeters(GrpcNbMeterServiceUtil.translate(d));
+                replyBuilder.addMeters(MeterProtoTranslator.translate(d));
             });
             responseObserver.onNext(replyBuilder.build());
             responseObserver.onCompleted();
