diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
index e0a5ca6..7c3c24e 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
@@ -265,8 +265,8 @@
 
     /**
      * Sends the packet to the table described in 'type'.
-     * @param type
-     * @return
+     * @param type flow rule table type
+     * @return table type transition instruction
      */
     public static Instruction transition(FlowRule.Type type) {
         checkNotNull(type, "Table type cannot be null");
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/installer/package-info.java b/core/net/src/main/java/org/onosproject/net/intent/impl/installer/package-info.java
new file mode 100644
index 0000000..77e759a
--- /dev/null
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/installer/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+/**
+ * Implementations of builtin intent installers.
+ */
+package org.onosproject.net.intent.impl.installer;
\ No newline at end of file
diff --git a/utils/misc/src/main/java/org/onlab/util/BlockingBoolean.java b/utils/misc/src/main/java/org/onlab/util/BlockingBoolean.java
index cffdc1a..f3049c3 100644
--- a/utils/misc/src/main/java/org/onlab/util/BlockingBoolean.java
+++ b/utils/misc/src/main/java/org/onlab/util/BlockingBoolean.java
@@ -40,7 +40,7 @@
      * value unless the thread is {@linkplain Thread#interrupt interrupted}.
      *
      * @param value specified value
-     * @throws InterruptedException
+     * @throws InterruptedException if interrupted while waiting
      */
     public void await(boolean value) throws InterruptedException {
         acquireSharedInterruptibly(value ? TRUE : FALSE);
@@ -56,7 +56,7 @@
      * @param unit the time unit of the {@code timeout} argument
      * @return {@code true} if the count reached zero and {@code false}
      *         if the waiting time elapsed before the count reached zero
-     * @throws InterruptedException
+     * @throws InterruptedException if interrupted while waiting
      */
     public boolean await(boolean value, long timeout, TimeUnit unit)
             throws InterruptedException {
diff --git a/utils/misc/src/main/java/org/onlab/util/BoundedThreadPool.java b/utils/misc/src/main/java/org/onlab/util/BoundedThreadPool.java
index 6fb1c90..9d476d2 100644
--- a/utils/misc/src/main/java/org/onlab/util/BoundedThreadPool.java
+++ b/utils/misc/src/main/java/org/onlab/util/BoundedThreadPool.java
@@ -66,7 +66,8 @@
     /**
      * Returns a fixed-size, bounded executor service.
      *
-     * @param threadFactory thread factory for the worker threads.
+     * @param numberOfThreads number of threads in the pool
+     * @param threadFactory   thread factory for the worker threads.
      * @return the bounded thread pool
      */
     public static BoundedThreadPool newFixedThreadPool(int numberOfThreads, ThreadFactory threadFactory) {
@@ -112,6 +113,7 @@
 
     // TODO schedule this with a fixed delay from a scheduled executor
     private final AtomicLong lastPrinted = new AtomicLong(0L);
+
     private void periodicallyPrintStats() {
         long now = System.currentTimeMillis();
         long prev = lastPrinted.get();
