diff --git a/bindings/java/build.xml b/bindings/java/build.xml
index 4597d7da606a7ca1c07c68166e13ab3d4a7b937c..ae5c00e35c8321a26ea6337ccb4db8fd93e8f683 100644
--- a/bindings/java/build.xml
+++ b/bindings/java/build.xml
@@ -107,4 +107,10 @@
     <delete dir="${build}"/>
     <delete dir="${dist}"/>
   </target>
+
+  <target name ="javadoc" description="Make the API docs">
+    <mkdir dir="javadoc"/>
+    <javadoc sourcepath="src" destdir="javadoc" overview="src/overview.html" />
+  </target>
+
 </project>
diff --git a/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java b/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java
index 45851f5350e2ce941026aae26a8de3885e68dc4b..c9b431f03386b904082c636ed516d28e840ba525 100755
--- a/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java
@@ -1,12 +1,25 @@
 /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
+ * Sleuth Kit Data Model
+ *
+ * Copyright 2011 Basis Technology Corp.
+ * Contact: carrier <at> sleuthkit <dot> org
+ *
+ * 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.
  */
 package org.sleuthkit.datamodel;
 
 /**
- *
- * @author pmartel
+ * Implements some general methods from the Content interface. 
  */
 public abstract class AbstractContent implements Content {
 	
@@ -23,4 +36,4 @@ public long getId() {
 		return this.obj_id;
 	}
 	
-}
\ No newline at end of file
+}
diff --git a/bindings/java/src/org/sleuthkit/datamodel/Content.java b/bindings/java/src/org/sleuthkit/datamodel/Content.java
index f96b7caf8370c0b5b5eb3b504fb9a525386b784f..5006ead1b9bcd6b6b0387f48a12596aa7fb08de4 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/Content.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/Content.java
@@ -21,8 +21,7 @@
 import java.util.List;
 
 /**
- * Interface for all content from the sleuthkit.
- * @author alawrence
+ * Interface for all datatypes that can be found in the database.
  */
 public interface Content {
 
@@ -57,14 +56,14 @@ public interface Content {
 		
 	/**
 	 * Gets the child contents.
-	 * @return
+	 * @return List of children
 	 * @throws TskException
 	 */
 	public List<Content> getChildren() throws TskException;
 	
 	/**
 	 * Gets the content object id.
-	 * @return
+	 * @return object id
 	 */
 	public long getId();
 }
diff --git a/bindings/java/src/org/sleuthkit/datamodel/ContentVisitor.java b/bindings/java/src/org/sleuthkit/datamodel/ContentVisitor.java
index 2ec7873049fd9dfc0a1856095abf20ef5fdaf374..d2dc476caf3ff324d0501c3deabbcc2458ea9319 100755
--- a/bindings/java/src/org/sleuthkit/datamodel/ContentVisitor.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/ContentVisitor.java
@@ -1,14 +1,29 @@
 /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
+ * Sleuth Kit Data Model
+ *
+ * Copyright 2011 Basis Technology Corp.
+ * Contact: carrier <at> sleuthkit <dot> org
+ *
+ * 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.
  */
 package org.sleuthkit.datamodel;
 
 /**
- * Interface for implementing a visitor pattern visitor for Content
+ * Interface for implementing a visitor pattern on all Content 
+ * implementations.  Allows for processing a Content object 
+ * without having to use lots of instanceof statements.
  *
  * @param <T> return type of visit methods
- * @author pmartel
  */
 public interface ContentVisitor<T> {
     
diff --git a/bindings/java/src/org/sleuthkit/datamodel/Directory.java b/bindings/java/src/org/sleuthkit/datamodel/Directory.java
index a1701eceb9fce48f6cfccddcd53593dece957071..4a112b6abcf9b520a28d36b3b8d4696aa2389f98 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/Directory.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/Directory.java
@@ -22,9 +22,10 @@
 import java.util.*;
 
 /**
- *
- * @author alawrence
+ * Represents a directory in a file system. 
+ * Populated based on data in database.
  */
+
 public class Directory extends FsContent{
 
 	/**
diff --git a/bindings/java/src/org/sleuthkit/datamodel/File.java b/bindings/java/src/org/sleuthkit/datamodel/File.java
index d3201bcfaeed11f7d434b091b7f8d18f0da5031a..55398e3bcf637071c6ea5270d42baf56c0d4c1a1 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/File.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/File.java
@@ -24,8 +24,8 @@
 
 
 /**
- *
- * @author alawrence
+ * Represents a file in a file system. 
+ * Populated based on data in database.
  */
 public class File extends FsContent{
 
diff --git a/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java b/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java
index bf945f63729585e74632b5244ef5217db3005a15..0f2c215d2284e1104e56b1c15ab18c375a8f8eda 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java
@@ -21,9 +21,10 @@
 import java.util.*;
 
 /**
- *
- * @author alawrence
+ * Represents a file system. 
+ * Populated based on data in database.
  */
+
 public class FileSystem extends AbstractContent{
 
 	long img_offset, fs_type, block_size, block_count, root_inum,
@@ -140,7 +141,7 @@ public long getBlock_count() {
 	}	 	
 	/**
 	 * get the inum of the root directory
-	 * @return
+	 * @return Root metadata address of the file system
 	 */
 	public long getRoot_inum() {
 		return root_inum;
diff --git a/bindings/java/src/org/sleuthkit/datamodel/FileSystemParent.java b/bindings/java/src/org/sleuthkit/datamodel/FileSystemParent.java
index 97dd7d090ead1fd274ca30a65fb0298c09cf5c33..57a411234a71e3f6976ee0a660a162bd369c9429 100755
--- a/bindings/java/src/org/sleuthkit/datamodel/FileSystemParent.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/FileSystemParent.java
@@ -1,14 +1,28 @@
 /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
+ * Sleuth Kit Data Model
+ *
+ * Copyright 2011 Basis Technology Corp.
+ * Contact: carrier <at> sleuthkit <dot> org
+ *
+ * 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.
  */
 package org.sleuthkit.datamodel;
 
 /**
- * 
- *
- * @author pmartel
+ * Interface for all objects that could be a parent to a FileSystem
+ * object. 
  */
+
 public interface FileSystemParent extends Content {
 	/**
 	 * get the handle to the sleuthkit image info object
diff --git a/bindings/java/src/org/sleuthkit/datamodel/FsContent.java b/bindings/java/src/org/sleuthkit/datamodel/FsContent.java
index dd34e79318d61241ea54a1169d56375141ce3af9..24f3c975b1caaa66c1ac8615ef2f65cefb891b16 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/FsContent.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/FsContent.java
@@ -21,8 +21,8 @@
 import java.sql.SQLException;
 
 /**
- * generalized class for files and directories
- * @author alawrence
+ * Generalized class that stores metadata that are common to both 
+ * files and directories.
  */
 public abstract class FsContent extends AbstractContent {
 
@@ -85,7 +85,7 @@ public boolean isDir(){
 	
 	/**
 	 * Is this the root of its parent filesystem?
-	 * @return 
+	 * @return true if this is the root inode
 	 */
 	public boolean isRoot() {
 		return parentFileSystem.getRoot_inum() == this.getMeta_addr(); 
diff --git a/bindings/java/src/org/sleuthkit/datamodel/Image.java b/bindings/java/src/org/sleuthkit/datamodel/Image.java
index 3d08483e6286824f71dbf5f705b111c10ee30518..971991e942c9c26adf5d34f26cd3ba0491a4eb97 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/Image.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/Image.java
@@ -22,9 +22,10 @@
 import java.util.List;
 
 /**
- * Image class
- * @author alawrence
+ * Represents a disk image file.
+ * Populated based on data in database.
  */
+
 public class Image extends AbstractContent implements FileSystemParent {
 	//data about image
 
diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java
index 392bbff1217e59714ea5033a0b2a7fa2683cc1be..6228cefd12deb3394cfd9207c3416140756374b1 100755
--- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java
@@ -32,8 +32,8 @@
 import org.sleuthkit.datamodel.SleuthkitJNI.CaseDbHandle.AddImageProcess;
 
 /**
- * database connection object. makes use of the sqlite jdbc libraries
- * @author alawrence
+ * Highest level object in Sleuthkit hierarchy that represents the database.  
+ * Stores one or more Images and children data.
  */
 public class SleuthkitCase {
 	private String dbPath;
@@ -55,7 +55,12 @@ private SleuthkitCase(String dbPath, SleuthkitJNI.CaseDbHandle caseHandle) throw
 		con = DriverManager.getConnection("jdbc:sqlite:" + dbPath);
 		con.setReadOnly(true);
 	}
-	
+
+    /**
+     * Open an existing case.
+     * @param dbPath Path to SQLite database.
+     * @return Case object
+     */
 	public static SleuthkitCase openCase(String dbPath) throws TskException {
 		SleuthkitJNI.CaseDbHandle caseHandle = SleuthkitJNI.openCaseDb(dbPath);
 		try {
@@ -66,7 +71,12 @@ public static SleuthkitCase openCase(String dbPath) throws TskException {
 			throw new TskException("Couldn't open case.", ex);
 		}
 	}
-	
+
+    /**
+     * Create a new case
+     * @param dbPath Path to where SQlite database should be created.
+     * @return Case object
+     */
 	public static SleuthkitCase newCase(String dbPath) throws TskException {
 		SleuthkitJNI.CaseDbHandle caseHandle = SleuthkitJNI.newCaseDb(dbPath);
 		try {
@@ -77,7 +87,14 @@ public static SleuthkitCase newCase(String dbPath) throws TskException {
 			throw new TskException("Couldn't open case.", ex);
 		}
 	}
-	
+
+    /**
+     * Start process of adding an image to the case. 
+     * Adding an image is a multi-step process and this returns
+     * an object that allows it to happen.
+     * @param timezone TZ timezone string to use for ingest of image.
+     * @return object to start ingest
+     */
 	public AddImageProcess makeAddImageProcess(String timezone) {
 		return this.caseHandle.initAddImageProcess(timezone);
 	}
@@ -309,7 +326,11 @@ public AddImageProcess makeAddImageProcess(String timezone) {
 //		return children;
 //	}
 	
-	
+
+    /**
+     * Get the list of root objects, meaning image files or local files.
+     * @return list of content objects.
+     */
 	public List<Content> getRootObjects() throws TskException {
 		try {
 			Statement s = con.createStatement();
@@ -340,6 +361,9 @@ public List<Content> getRootObjects() throws TskException {
 		}
 	}
 	
+    /** 
+     * Stores a pair of object ID and its type 
+     */
 	private static class ObjectInfo {
 		long id;
 		TskData.ObjectType type;
@@ -350,6 +374,10 @@ private static class ObjectInfo {
 		}
 	}
 	
+    /**
+     * Get info about children of a given Content from the database.
+     * @param c Parent object to run query against
+     */
 	Collection<ObjectInfo> getChildrenInfo(Content c) throws SQLException {
 		Statement s = con.createStatement();
 		ResultSet rs = s.executeQuery("select obj_id, type from tsk_objects " +
@@ -365,6 +393,8 @@ Collection<ObjectInfo> getChildrenInfo(Content c) throws SQLException {
 		return infos;
 	}
 	
+    /** 
+     
 	ObjectInfo getParentInfo(Content c) throws SQLException {
 		Statement s = con.createStatement();
 		ResultSet rs = s.executeQuery("SELECT parent.obj_id, parent.type "
@@ -605,7 +635,9 @@ public Void visit(VolumeSystem vs) {
 	}
 	
 
-
+    /**
+     * Returns the list of children for a given Image
+     */
 	List<Content> getImageChildren(Image img) throws SQLException {
 		Collection<ObjectInfo> childInfos = getChildrenInfo(img);
 		
@@ -625,6 +657,9 @@ List<Content> getImageChildren(Image img) throws SQLException {
 		return children;
 	}
 	
+    /**
+     * Returns the list of children for a given VolumeSystem
+     */
 	List<Content> getVolumeSystemChildren(VolumeSystem vs) throws SQLException {
 		Collection<ObjectInfo> childInfos = getChildrenInfo(vs);
 		
@@ -642,6 +677,9 @@ List<Content> getVolumeSystemChildren(VolumeSystem vs) throws SQLException {
 		return children;
 	}
 	
+    /**
+     * Returns a list of children for a given Volume
+     */
 	List<Content> getVolumeChildren(Volume vol) throws SQLException {
 		Collection<ObjectInfo> childInfos = getChildrenInfo(vol);
 		
@@ -658,11 +696,17 @@ List<Content> getVolumeChildren(Volume vol) throws SQLException {
 		return children;
 	}
 	
+    /**
+     * Returns a list of children for a given file system
+     */
 	List<Content> getFileSystemChildren(FileSystem fs) throws SQLException {
 		return getChildFsContents(fs.getId(), fs);
 	}
 
-
+    /**
+     * Returns a list of children for a given file system or directory
+     * @param par_obj_id Parent ID
+     */
 	List<Content> getChildFsContents(long par_obj_id, FileSystem parentFs) throws SQLException {
 		Statement s = con.createStatement();
 		ResultSet rs = s.executeQuery("select tsk_files.* from tsk_files join "
@@ -684,7 +728,9 @@ List<Content> getChildFsContents(long par_obj_id, FileSystem parentFs) throws SQ
 	}
 	
 	
-	
+	/**
+     * Returns a list of children for a given directory
+     */
 	List<Content> getDirectoryChildren(Directory dir) throws SQLException {
 		return getChildFsContents(dir.getId(), dir.getFileSystem());
 	}
@@ -748,7 +794,8 @@ List<Content> getDirectoryChildren(Directory dir) throws SQLException {
 
 	/**
 	 * Creates FsContents from a SQL query result set of rows from the tsk_files
-	 * table
+	 * table.  Assumes that the query was of the form
+     * "SELECT * FROM tsk_files WHERE XYZ".
 	 * @param rs ResultSet to get content from
 	 * @return A List<FsContent> containing the results
 	 * @throws SQLException  
@@ -773,10 +820,11 @@ public List<FsContent> resultSetToFsContents(ResultSet rs) throws SQLException {
 	
 	
 	/**
-	 * Returns the ResultSet from the given query.
-	 *
+	 * Process a query on the database to find files of a given criteria.
+	 * resultSetToFsContents will convert the results to useful objects.
+     *
 	 * @param query  the given string query to run
-	 * @return       the resultSet
+	 * @return       the resultSet from running the query.
 	 * @throws SQLException
 	 */
 	public ResultSet runQuery(String query) throws SQLException{
@@ -786,10 +834,12 @@ public ResultSet runQuery(String query) throws SQLException{
 		ResultSet rs = statement.executeQuery(query);
 		return rs;
 	}
+    
 
 	public void finalize(){
 		close();
 	}
+    
 
 	/**
 	 * Closes the database connection of this instance.
diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java
index 33aedc95afe923e6e0a3e617d8b0a7fec4eab062..e4f6de0516716beedb20a0dbbd93849160f2ffd4 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java
@@ -20,14 +20,12 @@
 package org.sleuthkit.datamodel;
 
 /**
- * Class links to sleuthkit c/c++ libraries to read data from image files
- * @author alawrence
+ * Interfaces with the sleuthkit c/c++ libraries to read data from image files
  */
 public class SleuthkitJNI {
 	//Native methods
 	private static native String getVersionNat();
 	
-	
 	//database
 	private static native long newCaseDbNat(String dbPath) throws TskException;
 	private static native long openCaseDbNat(String path) throws TskException;
@@ -67,9 +65,7 @@ public class SleuthkitJNI {
 
 	public SleuthkitJNI(){}
 	
-	
-	
-	
+
 	public static class CaseDbHandle {
 		private long caseDbPointer;
 		
@@ -80,11 +76,21 @@ private CaseDbHandle(long pointer) {
 		void free() throws TskException {
 			SleuthkitJNI.closeCaseDbNat(caseDbPointer);
 		}
-		
+	
+        /**
+         * Start the process of adding a disk image to the case. 
+         * @param timezone Timezone that image was from
+         * @return Object that can be used to manage the process.
+         */
 		AddImageProcess initAddImageProcess(String timezone) {
 			return new AddImageProcess(timezone);
 		}
 		
+        /**
+         * Encapsulates a multi-step process to add a disk image.
+         * Adding a disk image takes a while and this object
+         * has objects to manage that process.
+         */
 		public class AddImageProcess {
 			String timezone;
 			long autoDbPointer;
@@ -95,7 +101,8 @@ private AddImageProcess(String timezone) {
 			}
 			
 			/**
-			 * Add an image to the case database. MUST call either commit() or
+			 * Start the process of adding an image to the case database. 
+             * MUST call either commit() or
 			 * revert() after calling run().
 			 * @param imgPath Full path(s) to the image file(s).
 			 * @throws TskException
@@ -149,7 +156,6 @@ public long commit() throws TskException {
 				
 				return commitAddImgNat(autoDbPointer);
 			}
-			
 		}
 	}
 	
diff --git a/bindings/java/src/org/sleuthkit/datamodel/TskData.java b/bindings/java/src/org/sleuthkit/datamodel/TskData.java
index 502d349dcc3c645a8fcf26ba50ab1dd85f488565..79cbd9bfd687d717eaceaf7ac142949e44ef124b 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/TskData.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/TskData.java
@@ -23,9 +23,8 @@
 import java.util.Set;
 
 /**
- * The class that stores the "ENUM" for the data conversion.
- *
- * @author jantonius
+ * Maps data integer and binary data stored into the database
+ * into string or enum form. 
  */
 public class TskData {
 
diff --git a/bindings/java/src/org/sleuthkit/datamodel/TskException.java b/bindings/java/src/org/sleuthkit/datamodel/TskException.java
index a03fa2ebfa0d2673bb6af733cbfea49933c37189..fcd8c4f9c44bd5504dc0bc1bb4bc9306928af269 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/TskException.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/TskException.java
@@ -20,8 +20,7 @@
 package org.sleuthkit.datamodel;
 
 /**
- *
- * @author alawrence
+ * General exception that is thrown from Sleuthkit classes.
  */
 public class TskException extends Exception{
 	public TskException(String msg){
diff --git a/bindings/java/src/org/sleuthkit/datamodel/Volume.java b/bindings/java/src/org/sleuthkit/datamodel/Volume.java
index ff1c357d7d76397550b54aca996962abc2d1015c..6675da576c0547cc34e64beea0b5346a32220e56 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/Volume.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/Volume.java
@@ -22,8 +22,8 @@
 import java.util.List;
 
 /**
- * Volume class
- * @author alawrence
+ * Represents a volume in a VolumeSystem.
+ * Populated based on data in database.
  */
 public class Volume extends AbstractContent implements FileSystemParent {
 	// @@@ We should mark these as private and comment somewhere what the units are (bytes, sectors, etc.)
diff --git a/bindings/java/src/org/sleuthkit/datamodel/VolumeSystem.java b/bindings/java/src/org/sleuthkit/datamodel/VolumeSystem.java
index cd75b68a11ae8ce02c36e43285cc216e3e843916..713c2c853a6046640dbbc158c8d1338defeb35e1 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/VolumeSystem.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/VolumeSystem.java
@@ -21,8 +21,8 @@
 import java.util.List;
 
 /**
- * Volume System Object
- * @author alawrence
+ * Represents a volume system.
+ * Populated based on data in database.
  */
 public class VolumeSystem extends AbstractContent {
 	private long volumeSystemHandle = 0;
diff --git a/bindings/java/src/org/sleuthkit/datamodel/package.html b/bindings/java/src/org/sleuthkit/datamodel/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..dc473a414add2717fe6f41dc9918f6656da39333
--- /dev/null
+++ b/bindings/java/src/org/sleuthkit/datamodel/package.html
@@ -0,0 +1,23 @@
+<body>
+<p>This package represents the data that can be obtained from The Sleuth Kit (TSK).</p>
+<h2><b>Object Hierarchy</b></h2>
+<p>The data found in a disk image has a hierarchy to it. There is an image. It may have a volume system with one or more volumes. Each volume may have a file system in it. Each file system has one or more files. Because of this ordering, the objects are organized in a tree with parents and children. The Case being the top of the tree, images being the next layer down, etc.</p>
+
+<p>The Content class is the interface for the Image, VolumeSystem, etc. classes. The getChildren() method of each object returns the children objects as a Content object. You can use ContentVisitor to use the visitor pattern to correctly process it.</p>
+
+<p>In general, the type of a child is known, but there are a few cases where this is not the case. One obvious example is that the child of an Image can be either a VolumeSystem or a FileSystem. The former occurs when the image has partitions and the latter occurs if the image is just of a file system.</p>
+
+<h2><b>Basic Usage</b></h2>
+
+<h3><b>Case</b></h3>
+<p>A case represents one or more hard drive images. The SleuthkitCase class is used to represent a case. It is directly tied to a Sqlite database. You can access the forensic data from those images from the SleuthkitCase class.  This is the first object you should make.</p>
+
+<p>You get access to a SleuthkitCase class using either SleuthkitCase.newCase() or SleuthkitCase.openCase(). With the case object, you can add an image, get its children, or run queries against the database.</p>
+
+<h3><b>Data Mapping</b></h3>
+<p>Use TskData to map integer and enum values back to their meaning. For example, the file system type will be returned as an integer and TskData maps it to NTFS or FAT.</p>
+
+<h3><b>JNI</b></h3>
+<p>The bulk of the analysis occurs in the C/C++ code. JNI is used to run the C/C++ code from Java. The JNI methods are all located in the SleuthkitJNI class as static methods. It returns handles that refer to data structures in the C/C++ land. You should never have to directly call these methods. This class and its methods are used by the other data model classes.</p>
+
+</body>
diff --git a/bindings/java/src/overview.html b/bindings/java/src/overview.html
new file mode 100644
index 0000000000000000000000000000000000000000..2c17cc98623b27ca4d345a053b64ec1aa99861eb
--- /dev/null
+++ b/bindings/java/src/overview.html
@@ -0,0 +1,4 @@
+<body>
+<p>These classes allow Java programs to access data extracted by The Sleuth Kit.</p>
+<p>The Sleuth Kit is primarily a C/C++ library and set of command line tools. These classes allow programs to obtain the data that TSK can produce.   The typical steps would be to use JNI to cause the TSK library to create and populate a SQLite database.  The Java classes then directly open the SQLite database and perform queries on it. </p>
+</body>