diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java b/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java
index 99fe304..e0ff0e7 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/BridgeConfig.java
@@ -63,7 +63,7 @@
     /**
      * Delete a logical/virtual port.
      *
-     * return collection of port
+     * @return collection of port
      */
     Collection<PortDescription> getPorts();
 }
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/TunnelConfig.java b/core/api/src/main/java/org/onosproject/net/behaviour/TunnelConfig.java
index a0244cb..7e79a57 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/TunnelConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/TunnelConfig.java
@@ -25,30 +25,30 @@
 public interface TunnelConfig extends HandlerBehaviour {
 
     /**
-     * Create a tunnel.
+     * Creates a tunnel on this device.
      *
-     * @param tunnel tunnel entity
+     * @param tunnel tunnel descriptor
      */
     void createTunnel(TunnelDescription tunnel);
 
     /**
-     * Remove a tunnel.
+     * Removes a tunnel on this device.
      *
-     * @param tunnel tunnel entity
+     * @param tunnel tunnel descriptor
      */
     void removeTunnel(TunnelDescription tunnel);
 
     /**
-     * Update a tunnel.
+     * Updates a tunnel on this device.
      *
-     * @param tunnel tunnel entity
+     * @param tunnel tunnel descriptor
      */
     void updateTunnel(TunnelDescription tunnel);
 
     /**
-     * Gets tunnels.
+     * Returns tunnels created on this device.
      *
-     * return collection of tunnel
+     * @return collection of tunnels
      */
     Collection<TunnelDescription> getTunnels();
 
diff --git a/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverData.java b/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverData.java
index 7063c03..76d7932 100644
--- a/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverData.java
+++ b/core/api/src/main/java/org/onosproject/net/driver/DefaultDriverData.java
@@ -37,7 +37,8 @@
     /**
      * Creates new driver data.
      *
-     * @param driver parent driver type
+     * @param driver   parent driver type
+     * @param deviceId device identifier
      */
     public DefaultDriverData(Driver driver, DeviceId deviceId) {
         this.driver = driver;
diff --git a/core/api/src/main/java/org/onosproject/net/meter/package-info.java b/core/api/src/main/java/org/onosproject/net/meter/package-info.java
new file mode 100644
index 0000000..258634d
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/meter/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.
+ */
+
+/**
+ * Flow meter model and related services.
+ */
+package org.onosproject.net.meter;
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/net/newresource/package-info.java b/core/api/src/main/java/org/onosproject/net/newresource/package-info.java
new file mode 100644
index 0000000..52bb858
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/newresource/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+/**
+ * Generic network resource model and services for resource allocation and
+ * resource tracking.
+ */
+package org.onosproject.net.newresource;
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/ui/UiExtension.java b/core/api/src/main/java/org/onosproject/ui/UiExtension.java
index c310858..1f5fbd4 100644
--- a/core/api/src/main/java/org/onosproject/ui/UiExtension.java
+++ b/core/api/src/main/java/org/onosproject/ui/UiExtension.java
@@ -72,7 +72,7 @@
      * @return JavaScript inclusion statements
      */
     public InputStream js() {
-       return getStream(resourcePath + JS_HTML);
+        return getStream(resourcePath + JS_HTML);
     }
 
     /**
@@ -141,7 +141,8 @@
          * Views defaults to an empty list.
          * Both Message and TopoOverlay factories default to null.
          *
-         * @param cl the classloader
+         * @param cl    the class loader
+         * @param views list of views contributed by this extension
          */
         public Builder(ClassLoader cl, List<UiView> views) {
             checkNotNull(cl, "Must provide a class loader");
diff --git a/core/api/src/main/java/org/onosproject/ui/topo/package-info.java b/core/api/src/main/java/org/onosproject/ui/topo/package-info.java
new file mode 100644
index 0000000..85ac7fe
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/topo/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+/**
+ * Mechanism for dynamically extending topology view with information and
+ * behaviour overlays.
+ */
+package org.onosproject.ui.topo;
\ No newline at end of file
