diff --git a/pcep/ctl/pom.xml b/pcep/ctl/pom.xml
index 35ec429..687ee06 100644
--- a/pcep/ctl/pom.xml
+++ b/pcep/ctl/pom.xml
@@ -28,7 +28,7 @@
     <artifactId>onos-pcep-controller-impl</artifactId>
     <packaging>bundle</packaging>
 
-    <description>ONOS PCEP controller subsystem API</description>
+    <description>ONOS PCEP client controller subsystem API implementation</description>
 
     <dependencies>
         <dependency>
diff --git a/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java b/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java
index c22f548..a4ec0ff 100644
--- a/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java
+++ b/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepClientControllerImpl.java
@@ -15,23 +15,16 @@
  */
 package org.onosproject.pcep.controller.impl;
 
-import static org.onlab.util.Tools.groupedThreads;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Service;
-import org.onosproject.net.driver.DriverService;
 import org.onosproject.pcep.controller.PccId;
 import org.onosproject.pcep.controller.PcepClient;
 import org.onosproject.pcep.controller.PcepClientController;
@@ -44,21 +37,15 @@
 
 import com.google.common.collect.Sets;
 
+/**
+ * Implementation of PCEP client controller.
+ */
 @Component(immediate = true)
 @Service
 public class PcepClientControllerImpl implements PcepClientController {
 
     private static final Logger log = LoggerFactory.getLogger(PcepClientControllerImpl.class);
 
-    //@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected DriverService driverService;
-
-    private final ExecutorService executorMsgs =
-            Executors.newFixedThreadPool(32, groupedThreads("onos/pcep", "event-stats-%d"));
-
-    private final ExecutorService executorBarrier =
-            Executors.newFixedThreadPool(4, groupedThreads("onos/pcep", "event-barrier-%d"));
-
     protected ConcurrentHashMap<PccId, PcepClient> connectedClients =
             new ConcurrentHashMap<PccId, PcepClient>();
 
@@ -188,7 +175,6 @@
     public class PcepClientAgent implements PcepAgent {
 
         private final Logger log = LoggerFactory.getLogger(PcepClientAgent.class);
-        private final Lock clientLock = new ReentrantLock();
 
         @Override
         public boolean addConnectedClient(PccId pccId, PcepClient pc) {
diff --git a/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java b/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java
index 61964a0..f2bc51e 100644
--- a/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java
+++ b/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/PcepPacketStatsImpl.java
@@ -15,13 +15,10 @@
  */
 package org.onosproject.pcep.controller.impl;
 
-
 import org.onosproject.pcep.controller.PcepPacketStats;
+
 /**
- * A representation of a packet context which allows any provider
- * to view a packet in event, but may block the response to the
- * event if blocked has been called. This packet context can be used
- * to react to the packet in event with a packet out.
+ * The implementation for PCEP packet statistics.
  */
 public class PcepPacketStatsImpl implements PcepPacketStats {
 
@@ -30,6 +27,9 @@
     private int wrongPacketCount;
     private long time;
 
+    /**
+     * Default constructor.
+     */
     public PcepPacketStatsImpl() {
         this.inPacketCount = 0;
         this.outPacketCount = 0;
@@ -82,6 +82,9 @@
         this.wrongPacketCount++;
     }
 
+    /**
+     * Resets wrong packet count.
+     */
     public void resetWrongPacket() {
         this.wrongPacketCount = 0;
     }
diff --git a/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java b/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java
index 589d345..d86eefc 100644
--- a/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java
+++ b/pcep/ctl/src/main/java/org/onosproject/pcep/controller/impl/package-info.java
@@ -15,6 +15,6 @@
  */
 
 /**
- * Implementation of the PCEP controller subsystem.
+ * Implementation of the PCEP client controller subsystem.
  */
 package org.onosproject.pcep.controller.impl;
