diff --git a/pom.xml b/pom.xml
index 0c5d4e2..e4c82df 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,8 +16,7 @@
  	See the License for the specific language governing permissions and
  	limitations under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	
 	<parent>
@@ -29,7 +28,7 @@
 	<groupId>org.apache.gossip</groupId>
 	<artifactId>gossip</artifactId>
 	<name>gossip</name>
-	<version>0.1.0-incubating-SNAPSHOT</version>
+	<version>0.1.0-incubating</version>
 	<packaging>jar</packaging>
 	<description>A peer to peer cluster discovery service</description>
 	<url>http://gossip.incubator.apache.org/</url>
@@ -66,7 +65,7 @@
 		<connection>scm:git:git@github.com:apache/incubator-gossip.git</connection>
 		<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-gossip.git</developerConnection>
 		<url>scm:git:git@github.com:apache/incubator-gossip.git</url>
-		<tag>HEAD</tag>
+		<tag>gossip-0.1.0-incubating</tag>
 	</scm>
 	
 	<issueManagement>
diff --git a/src/main/java/org/apache/gossip/GossipMember.java b/src/main/java/org/apache/gossip/GossipMember.java
index 58b1e91..7ae4d81 100644
--- a/src/main/java/org/apache/gossip/GossipMember.java
+++ b/src/main/java/org/apache/gossip/GossipMember.java
@@ -23,7 +23,6 @@
 /**
  * A abstract class representing a gossip member.
  * 
- * @author joshclemm, harmenw
  */
 public abstract class GossipMember implements Comparable<GossipMember> {
 
@@ -44,6 +43,8 @@
   /**
    * Constructor.
    *
+   * @param clusterName
+   *          The name of the cluster 
    * @param uri
    *          A URI object containing IP/hostname and port
    * @param heartbeat
@@ -69,7 +70,7 @@
 
  
   /**
-   * The member address in the form IP/host:port Similar to the toString in
+   * @return The member address in the form IP/host:port Similar to the toString in
    * {@link InetSocketAddress}
    */
   public String getAddress() {
diff --git a/src/main/java/org/apache/gossip/GossipService.java b/src/main/java/org/apache/gossip/GossipService.java
index e50f260..80c01ca 100644
--- a/src/main/java/org/apache/gossip/GossipService.java
+++ b/src/main/java/org/apache/gossip/GossipService.java
@@ -84,8 +84,9 @@
   }
   
   /**
-   * Gossip data in a namespace that is per-node { node-id { key->value } }
+   * Gossip data in a namespace that is per-node { node-id { key, value } }
    * @param message
+   *    message to be gossip'ed across the cluster
    */
   public void gossipPerNodeData(GossipDataMessage message){
     gossipManager.gossipPerNodeData(message);
@@ -93,17 +94,21 @@
   
   /**
    * Retrieve per-node gossip data by key
+   * 
    * @param nodeId
+   *          the id of the node that owns the data
    * @param key
-   * @return return the value if found or null if not found or expired
+   *          the key in the per-node map to find the data
+   * @return the value if found or null if not found or expired
    */
   public GossipDataMessage findPerNodeData(String nodeId, String key){ 
     return getGossipManager().findPerNodeGossipData(nodeId, key);
   }
 
   /**
-   * Gossip shared data
+   * 
    * @param message
+   *          Shared data to gossip around the cluster
    */
   public void gossipSharedData(SharedGossipDataMessage message){
     gossipManager.gossipSharedData(message);
@@ -111,8 +116,9 @@
   
   /**
    * 
-   * @param key the key to search for
-   * @return
+   * @param key
+   *          the key to search for
+   * @return the value associated with given key
    */
   public SharedGossipDataMessage findSharedData(String key){
     return getGossipManager().findSharedGossipData(key);
diff --git a/src/main/java/org/apache/gossip/LocalGossipMember.java b/src/main/java/org/apache/gossip/LocalGossipMember.java
index d7e9f4e..97f4ab6 100644
--- a/src/main/java/org/apache/gossip/LocalGossipMember.java
+++ b/src/main/java/org/apache/gossip/LocalGossipMember.java
@@ -37,6 +37,7 @@
    * @param uri
    *          The uri of the member
    * @param id
+   *          id of the node
    * @param heartbeat
    *          The current heartbeat.
    * @param notificationListener
