diff --git a/eco/src/java/org/apache/heron/eco/Eco.java b/eco/src/java/org/apache/heron/eco/Eco.java
index c5c2d45..617924d 100644
--- a/eco/src/java/org/apache/heron/eco/Eco.java
+++ b/eco/src/java/org/apache/heron/eco/Eco.java
@@ -65,7 +65,7 @@
    * @param fileInputStream  The input stream associated with ECO topology definition file
    * @param propertiesFile  The optional key-value property file for optional property substitution.
    * @param envFilter The optional flag to tell ECO to perform environment variable substitution
-   * @throws Exception
+   * @throws Exception the exception thrown
    */
   public void submit(FileInputStream fileInputStream,
                      FileInputStream propertiesFile, boolean envFilter)
diff --git a/heron/api/src/java/org/apache/heron/streamlet/Builder.java b/heron/api/src/java/org/apache/heron/streamlet/Builder.java
index d6e4f70..f9a057c 100644
--- a/heron/api/src/java/org/apache/heron/streamlet/Builder.java
+++ b/heron/api/src/java/org/apache/heron/streamlet/Builder.java
@@ -43,7 +43,7 @@
    * Creates a new Streamlet using the underlying generator
    * @param generator The generator that generates the tuples of the streamlet
    * @param <R>
-   * @return
+   * @return the new streamlet
    */
   <R> Streamlet<R> newSource(Source<R> generator);
 
@@ -51,7 +51,7 @@
    * Creates a new Streamlet using the provided spout
    * @param spout The spout that emits the tuples of the streamlet
    * @param <R>
-   * @return
+   * @return the new streamlet
    */
   <R> Streamlet<R> newSource(IRichSpout spout);
 }
diff --git a/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletShadow.java b/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletShadow.java
index 26e7eb6..633c4c6 100644
--- a/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletShadow.java
+++ b/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletShadow.java
@@ -44,7 +44,7 @@
  * object(stream):
  *
  * StreamletImpl shadow = new StreamletShadow(stream) {
- *   @Override
+ *   Override
  *   public String getStreamId() {
  *     return "test";
  *   }
diff --git a/heron/metricsmgr/src/java/org/apache/heron/metricsmgr/MetricsUtil.java b/heron/metricsmgr/src/java/org/apache/heron/metricsmgr/MetricsUtil.java
index c8ec563..4fa76b9 100644
--- a/heron/metricsmgr/src/java/org/apache/heron/metricsmgr/MetricsUtil.java
+++ b/heron/metricsmgr/src/java/org/apache/heron/metricsmgr/MetricsUtil.java
@@ -36,7 +36,7 @@
    * So splitting the source would be an array with 3 elements:
    * ["host:port", componentName, instanceId]
    * @param record
-   * @return
+   * @return the split record source
    */
   public static String[] splitRecordSource(MetricsRecord record) {
     return record.getSource().split(SOURCE_DELIMITER);
diff --git a/heron/scheduler-core/src/java/org/apache/heron/scheduler/SchedulerMain.java b/heron/scheduler-core/src/java/org/apache/heron/scheduler/SchedulerMain.java
index 4301f1f..5c57e24 100644
--- a/heron/scheduler-core/src/java/org/apache/heron/scheduler/SchedulerMain.java
+++ b/heron/scheduler-core/src/java/org/apache/heron/scheduler/SchedulerMain.java
@@ -316,9 +316,9 @@
   /**
    * Get the http server for receiving scheduler requests
    *
-   * @param runtime, the runtime configuration
-   * @param scheduler, an instance of the scheduler
-   * @param port, the port for scheduler to listen on
+   * @param runtime the runtime configuration
+   * @param scheduler an instance of the scheduler
+   * @param port the port for scheduler to listen on
    * @return an instance of the http server
    */
   protected SchedulerServer getServer(
diff --git a/heron/scheduler-core/src/java/org/apache/heron/scheduler/SubmitterMain.java b/heron/scheduler-core/src/java/org/apache/heron/scheduler/SubmitterMain.java
index fbef628..6495505 100644
--- a/heron/scheduler-core/src/java/org/apache/heron/scheduler/SubmitterMain.java
+++ b/heron/scheduler-core/src/java/org/apache/heron/scheduler/SubmitterMain.java
@@ -66,11 +66,14 @@
   /**
    * Load the config parameters from the command line
    *
-   * @param cluster, name of the cluster
-   * @param role, user role
-   * @param environ, user provided environment/tag
-   * @param verbose, enable verbose logging
-   * @return config, the command line config
+   * @param cluster name of the cluster
+   * @param role user role
+   * @param environ user provided environment/tag
+   * @param submitUser the submit user
+   * @param dryRun run as dry run
+   * @param dryRunFormat the dry run format
+   * @param verbose enable verbose logging
+   * @return config the command line config
    */
   protected static Config commandLineConfigs(String cluster,
                                              String role,
diff --git a/heron/scheduler-core/src/java/org/apache/heron/scheduler/dryrun/DryRunRender.java b/heron/scheduler-core/src/java/org/apache/heron/scheduler/dryrun/DryRunRender.java
index 6091eec..042108e 100644
--- a/heron/scheduler-core/src/java/org/apache/heron/scheduler/dryrun/DryRunRender.java
+++ b/heron/scheduler-core/src/java/org/apache/heron/scheduler/dryrun/DryRunRender.java
@@ -31,7 +31,7 @@
 
   /**
    * Render dry-run response
-   * @return
+   * @return the string
    */
   String render();
 }
diff --git a/heron/scheduler-core/src/java/org/apache/heron/scheduler/dryrun/FormatterUtils.java b/heron/scheduler-core/src/java/org/apache/heron/scheduler/dryrun/FormatterUtils.java
index 6781461..f71e661 100644
--- a/heron/scheduler-core/src/java/org/apache/heron/scheduler/dryrun/FormatterUtils.java
+++ b/heron/scheduler-core/src/java/org/apache/heron/scheduler/dryrun/FormatterUtils.java
@@ -148,7 +148,7 @@
     /**
      * Convert Cell to String
      * @param rich if render in rich format
-     * @return
+     * @return the cell string
      */
     public String toString(boolean rich) {
       StringBuilder builder = new StringBuilder();
diff --git a/heron/schedulers/src/java/org/apache/heron/scheduler/aurora/AuroraController.java b/heron/schedulers/src/java/org/apache/heron/scheduler/aurora/AuroraController.java
index ce15888..a703339 100644
--- a/heron/schedulers/src/java/org/apache/heron/scheduler/aurora/AuroraController.java
+++ b/heron/schedulers/src/java/org/apache/heron/scheduler/aurora/AuroraController.java
@@ -35,6 +35,7 @@
   /**
    * Restarts a given container, or the entire job if containerId is null
    * @param containerId ID of container to restart, or entire job if null
+   * @return the boolean return value
    */
   boolean restart(Integer containerId);
 
diff --git a/heron/spi/src/java/org/apache/heron/spi/scheduler/ILauncher.java b/heron/spi/src/java/org/apache/heron/spi/scheduler/ILauncher.java
index f40609b..5c655a9 100644
--- a/heron/spi/src/java/org/apache/heron/spi/scheduler/ILauncher.java
+++ b/heron/spi/src/java/org/apache/heron/spi/scheduler/ILauncher.java
@@ -35,6 +35,8 @@
    * will be passed from submitter main. Config will contain information that launcher may use
    * to setup scheduler and other parameters required by launcher to contact
    * services which will launch scheduler.
+   * @param config the config
+   * @param runtime the runtime
    */
   void initialize(Config config, Config runtime);
 
diff --git a/storm-compatibility/src/java/backtype/storm/task/GeneralTopologyContext.java b/storm-compatibility/src/java/backtype/storm/task/GeneralTopologyContext.java
index 3b39946..70458ee 100644
--- a/storm-compatibility/src/java/backtype/storm/task/GeneralTopologyContext.java
+++ b/storm-compatibility/src/java/backtype/storm/task/GeneralTopologyContext.java
@@ -82,6 +82,8 @@
 
   /**
    * Gets the set of streams declared for the specified component.
+   * @param componentId component id
+   * @return the set of streams
    */
   public Set<String> getComponentStreams(String componentId) {
     return delegate.getComponentStreams(componentId);
@@ -90,6 +92,8 @@
   /**
    * Gets the task ids allocated for the given component id. The task ids are
    * always returned in ascending order.
+   * @param componentId the component id
+   * @return  the task ids
    */
   public List<Integer> getComponentTasks(String componentId) {
     return delegate.getComponentTasks(componentId);
@@ -97,6 +101,9 @@
 
   /**
    * Gets the declared output fields for the specified component/stream.
+   * @param  componentId the component id
+   * @param  streamId the steam id
+   * @return the declared output fields
    */
   public Fields getComponentOutputFields(String componentId, String streamId) {
     return new Fields(delegate.getComponentOutputFields(componentId, streamId));
@@ -152,6 +159,7 @@
 
   /**
    * Gets a map from task id to component id.
+   * @return a map from task id to component id
    */
   public Map<Integer, String> getTaskToComponent() {
     return delegate.getTaskToComponent();
@@ -159,6 +167,7 @@
 
   /**
    * Gets a list of all component ids in this topology
+   * @return the list of component ids in this topology
    */
   public Set<String> getComponentIds() {
     return delegate.getComponentIds();
diff --git a/storm-compatibility/src/java/backtype/storm/task/IBolt.java b/storm-compatibility/src/java/backtype/storm/task/IBolt.java
index 9259e74..0d836de 100644
--- a/storm-compatibility/src/java/backtype/storm/task/IBolt.java
+++ b/storm-compatibility/src/java/backtype/storm/task/IBolt.java
@@ -28,18 +28,14 @@
  * as output. An IBolt can do everything from filtering to joining to functions
  * to aggregations. It does not have to process a tuple immediately and may
  * hold onto tuples to process later.
- * <p>
  * <p>A bolt's lifecycle is as follows:</p>
- * <p>
  * <p>IBolt object created on client machine. The IBolt is serialized into the topology
  * (using Java serialization) and submitted to the master machine of the cluster (Nimbus).
  * Nimbus then launches workers which deserialize the object, call prepare on it, and then
  * start processing tuples.</p>
- * <p>
  * <p>If you want to parameterize an IBolt, you should set the parameter's through its
  * constructor and save the parameterization state as instance variables (which will
  * then get serialized and shipped to every task executing this bolt across the cluster).</p>
- * <p>
  * <p>When defining bolts in Java, you should use the IRichBolt interface which adds
  * necessary methods for using the Java TopologyBuilder API.</p>
  */
@@ -47,7 +43,6 @@
   /**
    * Called when a task for this component is initialized within a worker on the cluster.
    * It provides the bolt with the environment in which the bolt executes.
-   * <p>
    * <p>This includes the:</p>
    *
    * @param stormConf The Storm configuration for this bolt. This is the configuration provided to the topology merged in with cluster configuration on this machine.
@@ -63,12 +58,10 @@
    * be accessed using Tuple#getValue. The IBolt does not have to process the Tuple
    * immediately. It is perfectly fine to hang onto a tuple and process it later
    * (for instance, to do an aggregation or join).
-   * <p>
    * <p>Tuples should be emitted using the OutputCollector provided through the prepare method.
    * It is required that all input tuples are acked or failed at some point using the OutputCollector.
    * Otherwise, Storm will be unable to determine when tuples coming off the spouts
    * have been completed.</p>
-   * <p>
    * <p>For the common case of acking an input tuple at the end of the execute method,
    * see IBasicBolt which automates this.</p>
    *
@@ -79,7 +72,6 @@
   /**
    * Called when an IBolt is going to be shutdown. There is no guarentee that cleanup
    * will be called, because the supervisor kill -9's worker processes on the cluster.
-   * <p>
    * <p>The one context where cleanup is guaranteed to be called is when a topology
    * is killed when running Storm in simulator.</p>
    */
diff --git a/storm-compatibility/src/java/backtype/storm/task/IOutputCollector.java b/storm-compatibility/src/java/backtype/storm/task/IOutputCollector.java
index 8930a0f..0691f66 100644
--- a/storm-compatibility/src/java/backtype/storm/task/IOutputCollector.java
+++ b/storm-compatibility/src/java/backtype/storm/task/IOutputCollector.java
@@ -26,6 +26,10 @@
 public interface IOutputCollector extends IErrorReporter {
   /**
    * Returns the task ids that received the tuples.
+   * @param  streamId the stream id
+   * @param anchors the anchors
+   * @param tuple the tuple
+   * @return the task ids that recieved the tuples
    */
   List<Integer> emit(String streamId, Collection<Tuple> anchors, List<Object> tuple);
 
diff --git a/storm-compatibility/src/java/backtype/storm/task/OutputCollector.java b/storm-compatibility/src/java/backtype/storm/task/OutputCollector.java
index 1616fef..bb75dce 100644
--- a/storm-compatibility/src/java/backtype/storm/task/OutputCollector.java
+++ b/storm-compatibility/src/java/backtype/storm/task/OutputCollector.java
@@ -144,7 +144,6 @@
    * as direct, or the target bolt subscribes with a non-direct grouping,
    * an error will occur at runtime. The emitted values must be
    * immutable.
-   * <p>
    * <p>The default stream must be declared as direct in the topology definition.
    * See OutputDeclarer#declare for how this is done when defining topologies
    * in Java.</p>
@@ -164,7 +163,6 @@
    * as direct, or the target bolt subscribes with a non-direct grouping,
    * an error will occur at runtime. The emitted values must be
    * immutable.
-   * <p>
    * <p>The default stream must be declared as direct in the topology definition.
    * See OutputDeclarer#declare for how this is done when defining topologies
    * in Java.</p>
@@ -185,11 +183,9 @@
    * as direct, or the target bolt subscribes with a non-direct grouping,
    * an error will occur at runtime. The emitted values must be
    * immutable.
-   * <p>
    * <p>The default stream must be declared as direct in the topology definition.
    * See OutputDeclarer#declare for how this is done when defining topologies
    * in Java.</p>
-   * <p>
    * <p>Note that this method does not use anchors, so downstream failures won't
    * affect the failure status of any spout tuples.</p>
    *
diff --git a/storm-compatibility/src/java/backtype/storm/task/SpoutTopologyContext.java b/storm-compatibility/src/java/backtype/storm/task/SpoutTopologyContext.java
index 0857615..c571590 100644
--- a/storm-compatibility/src/java/backtype/storm/task/SpoutTopologyContext.java
+++ b/storm-compatibility/src/java/backtype/storm/task/SpoutTopologyContext.java
@@ -30,6 +30,7 @@
 
   /**
    * Gets the Maximum Spout Pending value for this instance of spout.
+   * @return Maximum Spout Pending value for this instance of spout
    */
   public Long getMaxSpoutPending() {
     throw new RuntimeException("Heron does not support Auto MSP");
@@ -37,6 +38,7 @@
 
   /**
    * Sets the Maximum Spout Pending value for this instance of spout
+   * @param maxSpoutPending the max spout pending value
    */
   public void setMaxSpoutPending(Long maxSpoutPending) {
     throw new RuntimeException("Heron does not support Auto MSP");
diff --git a/storm-compatibility/src/java/backtype/storm/task/TopologyContext.java b/storm-compatibility/src/java/backtype/storm/task/TopologyContext.java
index e015710..652f704 100644
--- a/storm-compatibility/src/java/backtype/storm/task/TopologyContext.java
+++ b/storm-compatibility/src/java/backtype/storm/task/TopologyContext.java
@@ -149,6 +149,7 @@
   /**
    * Gets the component id for this task. The component id maps
    * to a component id specified for a Spout or Bolt in the topology definition.
+   * @return the compoenent id
    */
   public String getThisComponentId() {
     return delegate.getThisComponentId();
@@ -158,6 +159,7 @@
    * Gets the declared output fields for the specified stream id for the component
    * this task is a part of.
    * @param streamId The id of the output field.
+   * @return the declared output fields for the specified stream id
    */
   public Fields getThisOutputFields(String streamId) {
     return new Fields(delegate.getThisOutputFields(streamId));
@@ -165,6 +167,7 @@
 
   /**
    * Gets the set of streams declared for the component of this task.
+   * @return the set of streams
    */
   public Set<String> getThisStreams() {
     return delegate.getThisStreams();
@@ -174,6 +177,7 @@
    * Gets the index of this task id in getComponentTasks(getThisComponentId()).
    * An example use case for this method is determining which task
    * accesses which resource in a distributed resource to ensure an even distribution.
+   * @return the task index
    */
   public int getThisTaskIndex() {
     return delegate.getThisTaskIndex();
diff --git a/storm-compatibility/src/java/backtype/storm/task/WorkerTopologyContext.java b/storm-compatibility/src/java/backtype/storm/task/WorkerTopologyContext.java
index 603ccf3..f07d2c3 100644
--- a/storm-compatibility/src/java/backtype/storm/task/WorkerTopologyContext.java
+++ b/storm-compatibility/src/java/backtype/storm/task/WorkerTopologyContext.java
@@ -59,6 +59,7 @@
    * (including the task for this task).
    * In Heron parlance, since every instance is running as a seperate process
    * this will just return the current instance's taskId
+   * @return the worker task
    */
   public List<Integer> getThisWorkerTasks() {
     List<Integer> retval = new LinkedList<>();
@@ -72,6 +73,7 @@
    * on the same machine.
    * In Heron parlance, we just return the taskId since that
    * should be unique
+   * @return the worker port
    */
   public Integer getThisWorkerPort() {
     return delegate.getThisTaskId();
@@ -81,6 +83,7 @@
    * Gets the location of the external resources for this worker on the
    * local filesystem. These external resources typically include bolts implemented
    * in other languages, such as Ruby or Python.
+   * @return the location of the external resources
    */
   public String getCodeDir() {
     throw new RuntimeException("Not supported");
@@ -90,6 +93,7 @@
    * If this task spawns any subprocesses, those subprocesses must immediately
    * write their PID to this directory on the local filesystem to ensure that
    * Storm properly destroys that process when the worker is shutdown.
+   * @return the PID directory
    */
   public String getPIDDir() {
     throw new RuntimeException("Not supported");
diff --git a/website/package.json b/website/package.json
index 3e4c2d7..cd1f248 100755
--- a/website/package.json
+++ b/website/package.json
@@ -2,7 +2,7 @@
   "private": true,
   "dependencies": {
     "del": "^2.2.2",
-    "gulp": "github:gulpjs/gulp#4.0",
+    "gulp": "^4.0.0",
     "gulp-autoprefixer": "^4.0.0",
     "gulp-hash": "^4.1.1",
     "gulp-sass": "^3.1.0",
diff --git a/website/scripts/javadocs.sh b/website/scripts/javadocs.sh
index 3b7aa45..ccbfb63 100755
--- a/website/scripts/javadocs.sh
+++ b/website/scripts/javadocs.sh
@@ -18,7 +18,7 @@
 set -e
 
 JAVADOC=javadoc
-FLAGS="-quiet"
+FLAGS="-quiet -Xdoclint:none"
 
 HERON_ROOT_DIR=$(git rev-parse --show-toplevel)
 # for display on GitHub website
@@ -50,7 +50,7 @@
 rm -rf $JAVADOC_OUTPUT_DIR
 mkdir -p $JAVADOC_OUTPUT_DIR
 
-BIN_JARS=`find $HERON_ROOT_DIR/bazel-heron/_bin/. -name "*\.jar" | tr '\n' ':'`
+BIN_JARS=`find $HERON_ROOT_DIR/bazel-incubator-heron/_bin/. -name "*\.jar" | tr '\n' ':'`
 GEN_JARS=`find $HERON_ROOT_DIR/bazel-genfiles/external/. -name "*\.jar" | tr '\n' ':'`
 SCRIBE_JARS=`find $HERON_ROOT_DIR/bazel-bin/. -name "libthrift_scribe_java.jar" | tr '\n' ':'`
 PROTO_JARS=`find $HERON_ROOT_DIR/bazel-bin/heron/proto/. -name "*\.jar" | tr '\n' ':'`
diff --git a/website/scripts/python-doc-gen.sh b/website/scripts/python-doc-gen.sh
index 75b6a34..35f8acc 100755
--- a/website/scripts/python-doc-gen.sh
+++ b/website/scripts/python-doc-gen.sh
@@ -20,15 +20,13 @@
 HERONPY_VERSION=$1
 HERON_ROOT_DIR=$(git rev-parse --show-toplevel)
 INPUT=heronpy
-TMP_DIR=$(mktemp --directory)
-
-VENV="$(mktemp --directory)"
+TMP_DIR=$(mktemp -d)
+VENV="$(mktemp -d)"
 virtualenv "$VENV"
 source "$VENV/bin/activate"
 # TODO: make this a virtualenv
 pip install "heronpy==${HERONPY_VERSION}" "pdoc~=0.3.2"
 pip install --ignore-installed six
-
 mkdir -p static/api && rm -rf static/api/python
 
 pdoc heronpy \
