javadoc for tuple
diff --git a/src/jvm/backtype/storm/tuple/Tuple.java b/src/jvm/backtype/storm/tuple/Tuple.java
index 75786f2..30bd73c 100644
--- a/src/jvm/backtype/storm/tuple/Tuple.java
+++ b/src/jvm/backtype/storm/tuple/Tuple.java
@@ -5,6 +5,17 @@
 import java.util.List;
 import java.util.Map;
 
+/**
+ * The tuple is the main data structure in Storm. A tuple is a named list of values, 
+ * where each value can be any type. Tuples are dynamically typed -- the types of the fields 
+ * do not need to be declared. Tuples have helper methods like getInteger and getString 
+ * to get field values without having to cast the result.
+ * 
+ * Storm needs to know how to serialize all the values in a tuple. By default, Storm 
+ * knows how to serialize the primitive types, strings, and byte arrays. If you want to 
+ * use another type, you'll need to implement and register a serializer for that type.
+ * See {@link http://github.com/nathanmarz/storm/wiki/Serialization} for more info.
+ */
 public class Tuple {
     private List<Object> values;
     private int taskId;
@@ -48,46 +59,88 @@
         return new Tuple(this.context, this.values, this.taskId, this.streamId, MessageId.makeId(newIds));
     }
 
+    /**
+     * Returns the number of fields in this tuple.
+     */
     public int size() {
         return values.size();
     }
-
+    
+    /**
+     * Gets the field at position i in the tuple. Returns object since tuples are dynamically typed.
+     */
     public Object getValue(int i) {
         return values.get(i);
     }
 
+    /**
+     * Returns the String at position i in the tuple. If that field is not a String, 
+     * you will get a runtime error.
+     */
     public String getString(int i) {
         return (String) values.get(i);
     }
 
+    /**
+     * Returns the Integer at position i in the tuple. If that field is not an Integer, 
+     * you will get a runtime error.
+     */
     public Integer getInteger(int i) {
         return (Integer) values.get(i);
     }
 
+    /**
+     * Returns the Long at position i in the tuple. If that field is not a Long, 
+     * you will get a runtime error.
+     */
     public Long getLong(int i) {
         return (Long) values.get(i);
     }
 
+    /**
+     * Returns the Boolean at position i in the tuple. If that field is not a Boolean, 
+     * you will get a runtime error.
+     */
     public Boolean getBoolean(int i) {
         return (Boolean) values.get(i);
     }
 
+    /**
+     * Returns the Short at position i in the tuple. If that field is not a Short, 
+     * you will get a runtime error.
+     */
     public Short getShort(int i) {
         return (Short) values.get(i);
     }
 
+    /**
+     * Returns the Byte at position i in the tuple. If that field is not a Byte, 
+     * you will get a runtime error.
+     */
     public Byte getByte(int i) {
         return (Byte) values.get(i);
     }
 
+    /**
+     * Returns the Double at position i in the tuple. If that field is not a Double, 
+     * you will get a runtime error.
+     */
     public Double getDouble(int i) {
         return (Double) values.get(i);
     }
 
+    /**
+     * Returns the Float at position i in the tuple. If that field is not a Float, 
+     * you will get a runtime error.
+     */
     public Float getFloat(int i) {
         return (Float) values.get(i);
     }
 
+    /**
+     * Returns the byte array at position i in the tuple. If that field is not a byte array, 
+     * you will get a runtime error.
+     */
     public byte[] getBinary(int i) {
         return (byte[]) values.get(i);
     }
@@ -97,26 +150,44 @@
         return values;
     }
 
+    /**
+     * Gets all the values in this tuple.
+     */
     public List<Object> getValues() {
         return values;
     }
     
+    /**
+     * Gets the names of the fields in this tuple.
+     */
     public Fields getFields() {
         return context.getComponentOutputFields(getSourceComponent(), getSourceStreamId());
     }
 
+    /**
+     * Returns a subset of the tuple based on the fields selector.
+     */
     public List<Object> select(Fields selector) {
         return getFields().select(selector, values);
     }
     
+    /**
+     * Gets the id of the component that created this tuple.
+     */
     public int getSourceComponent() {
         return context.getComponentId(taskId);
     }
     
+    /**
+     * Gets the id of the task that created this tuple.
+     */
     public int getSourceTask() {
         return taskId;
     }
     
+    /**
+     * Gets the id of the stream that this tuple was emitted to.
+     */
     public int getSourceStreamId() {
         return streamId;
     }