diff --git a/pom.xml b/pom.xml
index ebb3561..25eafc8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,7 +66,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-source-plugin</artifactId>
-        <version>2.4</version>
+        <version>3.0.0</version>
         <executions>
           <execution>
             <id>attach-sources</id>
@@ -116,7 +116,7 @@
       <plugin>
         <groupId>org.sonatype.plugins</groupId>
         <artifactId>nexus-staging-maven-plugin</artifactId>
-        <version>1.6.5</version>
+        <version>1.6.7</version>
         <extensions>true</extensions>
         <configuration>
           <serverId>sonatype-nexus-staging</serverId>
@@ -191,7 +191,7 @@
       <plugin>
         <groupId>org.eluder.coveralls</groupId>
         <artifactId>coveralls-maven-plugin</artifactId>
-        <version>4.0.0</version>
+        <version>4.1.0</version>
         <configuration>
           <repoToken />
         </configuration>
@@ -222,13 +222,13 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-clean-plugin</artifactId>
-          <version>2.5</version>
+          <version>3.0.0</version>
         </plugin>
 
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-dependency-plugin</artifactId>
-          <version>2.8</version>
+          <version>2.10</version>
         </plugin>
 
         <plugin>
@@ -240,31 +240,31 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-help-plugin</artifactId>
-          <version>2.1.1</version>
+          <version>2.2</version>
         </plugin>
 
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-install-plugin</artifactId>
-          <version>2.3.1</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-          <version>2.5</version>
-        </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-release-plugin</artifactId>
           <version>2.5.2</version>
         </plugin>
 
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>3.0.0</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-release-plugin</artifactId>
+          <version>2.5.3</version>
+        </plugin>
+
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-assembly-plugin</artifactId>
-          <version>2.4</version>
+          <version>2.6</version>
         </plugin>
 
         <plugin>
@@ -276,15 +276,15 @@
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>exec-maven-plugin</artifactId>
-          <version>1.2.1</version>
+          <version>1.5.0</version>
         </plugin>
 
       </plugins>
     </pluginManagement>
   </build>
 
+  <!-- This is optional -->  
   <profiles>
-
     <profile>
       <id>strict</id>
       <build>
@@ -296,8 +296,8 @@
               <artifactId>maven-compiler-plugin</artifactId>
               <version>3.5.1</version>
               <configuration>
-                <source>1.7</source>
-                <target>1.7</target>
+                <source>1.8</source>
+                <target>1.8</target>
                 <compilerId>javac-with-errorprone</compilerId>
                 <forceJavacCompilerUse>true</forceJavacCompilerUse>
               </configuration>
@@ -305,7 +305,7 @@
                 <dependency>
                   <groupId>org.codehaus.plexus</groupId>
                   <artifactId>plexus-compiler-javac-errorprone</artifactId>
-                  <version>2.5</version>
+                  <version>2.7</version>
                 </dependency>
               </dependencies>
             </plugin>
@@ -315,7 +315,7 @@
       </build>
     </profile>
   </profiles>
-
+  
   <distributionManagement>
     <repository>
       <id>sonatype-nexus-staging</id>
diff --git a/src/main/java/com/yahoo/sketches/memory/MemoryUtil.java b/src/main/java/com/yahoo/sketches/memory/MemoryUtil.java
index dcb4541..5b3c381 100644
--- a/src/main/java/com/yahoo/sketches/memory/MemoryUtil.java
+++ b/src/main/java/com/yahoo/sketches/memory/MemoryUtil.java
@@ -16,6 +16,7 @@
   private MemoryUtil() {}
   
   /**
+   * 
    * @deprecated this method was moved to 
    * {@link NativeMemory#copy(Memory, long, Memory, long, long)}
    * @param source the source Memory
@@ -24,6 +25,7 @@
    * @param dstOffsetBytes the destination offset
    * @param lengthBytes the number of bytes to copy
    */
+  @Deprecated
   public static void copy(Memory source, long srcOffsetBytes, Memory destination, 
       long dstOffsetBytes, long lengthBytes) {
     NativeMemory.copy(source, srcOffsetBytes, destination, dstOffsetBytes, lengthBytes);
diff --git a/src/main/java/com/yahoo/sketches/quantiles/QuantilesSketch.java b/src/main/java/com/yahoo/sketches/quantiles/QuantilesSketch.java
index 9708ebb..a4abe98 100644
--- a/src/main/java/com/yahoo/sketches/quantiles/QuantilesSketch.java
+++ b/src/main/java/com/yahoo/sketches/quantiles/QuantilesSketch.java
@@ -35,7 +35,7 @@
  * </ul>
  * A frequency histogram can be obtained by simply multiplying these fractions by getN(), 
  * which is the total count of values received. 
- * The getCDF(*) works similarly, but produces the cumulative distribution instead.</p>
+ * The getCDF(*) works similarly, but produces the cumulative distribution instead.
  * 
  * <p>The accuracy of this sketch is a function of the configured value <i>k</i>, which also affects
  * the overall size of the sketch. Accuracy of this quantile sketch is always with respect to
diff --git a/src/test/java/com/yahoo/sketches/hll/HipHllSketchTest.java b/src/test/java/com/yahoo/sketches/hll/HipHllSketchTest.java
index d0481e2..68a06f1 100644
--- a/src/test/java/com/yahoo/sketches/hll/HipHllSketchTest.java
+++ b/src/test/java/com/yahoo/sketches/hll/HipHllSketchTest.java
@@ -37,7 +37,7 @@
     HllSketchBuilder bob = HllSketch.builder().setLogBuckets(10).setHipEstimator(true);
 
     HllSketch sketch = bob.build();
-    sketch.update(new long[]{182748912741928l});
+    sketch.update(new long[]{182748912741928L});
 
     boolean exceptionCaught = false;
     HllSketch unionInto = bob.build();
