diff --git a/bindings/java/doxygen/Doxyfile b/bindings/java/doxygen/Doxyfile
index 7fc13ffaa4e367808f7620e56ba6902451c6979d..06fe09b6c27261eab807ec617fe2b65b6dbc9e42 100644
--- a/bindings/java/doxygen/Doxyfile
+++ b/bindings/java/doxygen/Doxyfile
@@ -761,6 +761,7 @@ WARN_LOGFILE           =
 INPUT                  = main.dox \
                          query_database.dox \
 			             blackboard.dox \
+						 artifact_catalog.dox \
                          insert_and_update_database.dox \
                          communications.dox \
 						 ../src
@@ -851,7 +852,7 @@ EXAMPLE_RECURSIVE      = NO
 # that contain images that are to be included in the documentation (see the
 # \image command).
 
-IMAGE_PATH             =
+IMAGE_PATH             = images/
 
 # The INPUT_FILTER tag can be used to specify a program that doxygen should
 # invoke to filter for each input file. Doxygen will invoke the filter program
diff --git a/bindings/java/doxygen/artifact_catalog.dox b/bindings/java/doxygen/artifact_catalog.dox
new file mode 100644
index 0000000000000000000000000000000000000000..3edf6961595394d65d42047ea15752e410f33083
--- /dev/null
+++ b/bindings/java/doxygen/artifact_catalog.dox
@@ -0,0 +1,779 @@
+/*! \page artifact_catalog_page Autopsy Standard Artifacts Catalog
+
+
+# Introduction
+This document reflects current standard usage of artifacts and attributes for posting analysis results to the case blackboard.
+
+Note that "TSK" is an abbreviation of "The SleuthKit." Artifact type names with a "TSK_" prefix indicate the names of standard or "built in" types. User-defined artifact and attribute types should not be given names with "TSK_" prefixes.
+
+The catalog section below has one entry for each standard artifact type. Each entry lists the required and optional attributes of artifacts of the type.
+<h1>Artifacts Catalog</h1>
+
+
+---
+## TSK_ACCOUNT
+Details about a credit card or communications account. 
+
+### REQUIRED ATTRIBUTES
+- TSK_ACCOUNT_TYPE (Type of the account, e.g., Skype)
+- TSK_ID (Unique identifier of the account)
+ 	or 
+TSK_CARD_NUMBER (Credit card number)
+
+### OPTIONAL ATTRIBUTES
+- TSK_KEYWORD_SEARCH_DOCUMENT_ID (Document ID of the Solr document that contains the TSK_CARD_NUMBER when the account is a credit card discovered by the Autopsy regular expression search for credit cards)
+- TSK_SET_NAME (The keyword list name, i.e., "Credit Card Numbers", when the account is a credit card discovered by the Autopsy regular expression search for credit cards)
+
+
+
+---
+## TSK_BLUETOOTH_ADAPTER
+Details about a Bluetooth adapter.
+
+### REQUIRED ATTRIBUTES
+- TSK_MAC_ADDRESS (MAC address of the Bluetooth adapter)
+
+
+
+---
+## TSK_BLUETOOTH_PAIRING
+Details about a Bluetooth pairing event. 
+
+### REQUIRED ATTRIBUTES
+- TSK_DEVICE_NAME (Name of the Bluetooth device)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (When the pairing occurred, in seconds since 1970-01-01T00:00:00Z)
+- TSK_MAC_ADDRESS (MAC address of the Bluetooth device)
+
+
+
+---
+## TSK_CALENDAR_ENTRY
+A calendar entry in an application file or database.
+
+### REQUIRED ATTRIBUTES
+- TSK_CALENDAR_ENTRY_TYPE (E.g., Reminder, Event, Birthday, etc.)
+- TSK_DATETIME_START (Start of the entry, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DESCRIPTION (Description of the entry, such as a note)
+
+### OPTIONAL ATTRIBUTES
+- TSK_LOCATION (Location of the entry, such as an address)
+- TSK_DATETIME_END (End of the entry, in seconds since 1970-01-01T00:00:00Z)
+
+
+
+---
+## TSK_CALLLOG
+A call log record in an application file or database.
+
+### REQUIRED ATTRIBUTES
+- At least one of:
+- TSK_PHONE_NUMBER (A phone number involved in this call record)
+- TSK_PHONE_NUMBER_FROM (The phone number that initiated the call)
+- TSK_PHONE_NUMBER_TO (The phone number that receives the call)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME_END (When the call ended, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_START (When the call started, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DIRECTION (The communication direction, i.e., Incoming or Outgoing)
+- TSK_NAME (The name of the caller or callee)
+
+
+
+---
+## TSK_CLIPBOARD_CONTENT
+Data found on the operating system's clipboard.
+
+### REQUIRED ATTRIBUTES
+- TSK_TEXT (Text on the clipboard)
+
+
+
+---
+## TSK_CONTACT
+A contact book entry in an application file or database.
+
+### REQUIRED ATTRIBUTES
+- At least one of:
+- TSK_EMAIL (An email address associated with the contact)
+- TSK_EMAIL_HOME (An email address that is known to be the personal email of the contact)
+- TSK_EMAIL_OFFICE (An email address that is known to be the work email of the contact)
+- TSK_PHONE_NUMBER (A phone number associated with the contact)
+- TSK_PHONE_NUMBER_HOME (A phone number that is known to be the home phone number of the contact)
+- TSK_PHONE_NUMBER_MOBILE (A phone number that is known to be the mobile phone number of the contact)
+- TSK_PHONE_NUMBER_OFFICE (A phone number that is known to be the work phone number of the contact)
+- TSK_NAME (Contact name)
+
+### OPTIONAL ATTRIBUTES
+- TSK_ORGANIZATION (An organization that the contact belongs to, e.g., Stanford University, Google)
+- TSK_URL (e.g., the URL of an image if the contact is a vCard)
+
+
+
+---
+## TSK_DATA_SOURCE_USAGE
+Describes how a data source was used, e.g., as a SIM card or an OS drive (such as for Windows or Android).
+
+### REQUIRED ATTRIBUTES
+- TSK_DESCRIPTION (Description of the usage, e.g., "OS Drive (Windows Vista)").
+
+
+
+---
+## TSK_DEVICE_ATTACHED
+Details about a device that was physically attached to a data source.
+
+### REQUIRED ATTRIBUTES
+- TSK_DEVICE_ID (String that uniquely identifies the attached device)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (When the device was attached, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DEVICE_MAKE (Make of the attached device, e.g., Apple)
+- TSK_DEVICE_MODEL (Model of the attached device, e.g., iPhone 6s)
+- TSK_MAC_ADDRESS (Mac address of the attached device)
+
+
+
+---
+## TSK_DEVICE_INFO
+Details about a device data source.
+
+### REQUIRED ATTRIBUTES
+- At least one of:
+- TSK_IMEI (IMEI number of the device)
+- TSK_ICCID (ICCID number of the SIM)
+- TSK_IMSI (IMSI number of the device)
+
+
+
+---
+## TSK_EMAIL_MSG
+An email message found in an application file or database.
+
+### REQUIRED ATTRIBUTES
+- At least one of:
+-  TSK_EMAIL_CONTENT_HTML (Representation of email as HTML)
+-  TSK_EMAIL_CONTENT_PLAIN (Representation of email as plain text)
+-  TSK_EMAIL_CONTENT_RTF (Representation of email as RTF)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME_RCVD (When email message was received, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_SENT (When email message was sent, in seconds since 1970-01-01T00:00:00Z)
+- TSK_EMAIL_BCC (BCC'd recipient, multiple recipients should be in a comma separated string)
+- TSK_EMAIL_CC (CC'd recipient, multiple recipients should be in a comma separated string)
+- TSK_EMAIL_FROM (Email address that sent the message)
+- TSK_EMAIL_TO (Email addresses the email message was sent to, multiple emails should be in a comma separated string)
+- TSK_HEADERS (Transport message headers)
+- TSK_MSG_ID (Message ID supplied by the email application)
+- TSK_PATH (Path in the data source to the file containing the email message)
+- TSK_SUBJECT (Subject of the email message)
+- TSK_THREAD_ID (ID specified by the analysis module to group emails into threads for display purposes)
+
+
+
+---
+## TSK_ENCRYPTION_DETECTED
+An indication that the content is encrypted.
+
+### REQUIRED ATTRIBUTES
+- TSK_COMMENT (A comment on the encryption, e.g., encryption type or password)
+
+
+
+---
+## TSK_ENCRYPTION_SUSPECTED
+An indication that the content is likely encrypted.
+
+### REQUIRED ATTRIBUTES
+- TSK_COMMENT (Reason for suspecting encryption)
+
+
+
+---
+## TSK_EXTRACTED_TEXT
+Text extracted from some content.
+
+### REQUIRED ATTRIBUTES
+TSK_TEXT (The extracted text)
+
+
+
+---
+## TSK_EXT_MISMATCH_DETECTED
+An indication that the registered extensions for a file's mime type do not match the file's extension.
+
+### REQUIRED ATTRIBUTES
+None
+
+
+
+---
+## TSK_FACE_DETECTED
+An indication that a human face was detected in some content.
+
+### REQUIRED ATTRIBUTES
+None
+
+
+
+---
+## TSK_GEN_INFO
+A generic information artifact.
+
+### REQUIRED ATTRIBUTES
+None
+
+
+
+---
+## TSK_GPS_BOOKMARK
+A bookmarked GPS location.
+
+### REQUIRED ATTRIBUTES
+- TSK_GEO_LATITUDE (The latitude value of the bookmark)
+- TSK_GEO_LONGITUDE (The longitude value of the bookmark)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (Timestamp of the GPS bookmark, in seconds since 1970-01-01T00:00:00Z)
+- TSK_GEO_ALTITUDE (The altitude of the specified latitude and longitude)
+- TSK_LOCATION (The address of the bookmark. Ex: 123 Main St.)
+- TSK_NAME (The name of the bookmark. Ex: Boston)
+- TSK_PROG_NAME (Name of the application that was the source of the GPS bookmark)
+
+
+
+---
+## TSK_GPS_LAST_KNOWN_LOCATION
+The last known location of a GPS connected device. This may be from a perspective other than the device.
+
+### REQUIRED ATTRIBUTES
+- TSK_GEO_LATITUDE (Last known latitude value)
+- TSK_GEO_LONGITUDE (Last known longitude value)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (Timestamp of the last known location, in seconds since 1970-01-01T00:00:00Z)
+- TSK_GEO_ALTITUDE (Altitude of the last known latitude and longitude)
+- TSK_LOCATION (The address of the last known location. Ex: 123 Main St.)
+- TSK_NAME (The name of the last known location. Ex: Boston)
+
+
+
+---
+## TSK_GPS_ROUTE
+A GPS route.
+
+### REQUIRED ATTRIBUTES
+- TSK_GEO_LATITUDE_START (The latitude value of the starting point)
+- TSK_GEO_LATITUDE_END (The latitude value of the ending point)
+- TSK_GEO_LONGITUDE_START (The longitude value of the ending point)
+- TSK_GEO_LONGITUDE_END (The longitude value of the ending point)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (Timestamp of the GPS route, in seconds since 1970-01-01T00:00:00Z)
+- TSK_LOCATION (Location of the route, e.g., a state or city)
+- TSK_NAME (Name of the route, e.g., Minute Man Trail)
+- TSK_PROG_NAME (Name of the application that was the source of the GPS route)
+
+
+
+---
+## TSK_GPS_SEARCH
+A GPS location that was known to have been searched by the device or user.
+
+### REQUIRED ATTRIBUTES
+- TSK_GEO_LATITUDE (The GPS latitude value that was searched)
+- TSK_GEO_LONGITUDE (The GPS longitude value that was searched)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (Timestamp of the GPS search, in seconds since 1970-01-01T00:00:00Z)
+- TSK_GEO_ALTITUDE (Altitude of the searched GPS coordinates)
+- TSK_LOCATION (The address of the target location, e.g., 123 Main St.)
+- TSK_NAME (The name of the target location, e.g., Boston)
+
+
+
+---
+## TSK_GPS_TRACKPOINT
+A GPS trackpoint found in an application, file or database.
+
+### REQUIRED ATTRIBUTES
+- TSK_GEO_LATITUDE (The GPS latitude value that was tracked)
+- TSK_GEO_LONGITUDE (The GPS longitude value that was tracked)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (Timestamp of the GPS trackpoint, in seconds since 1970-01-01T00:00:00Z)
+- TSK_GEO_ALTITUDE (Altitude of the latitude and longitude values)
+- TSK_NAME (The name of the trackpoint. Ex: Boston)
+- TSK_PROG_NAME (Name of application containing the GPS trackpoint)
+
+
+
+---
+## TSK_HASHSET_HIT
+Indicates that the MD5 hash of a file matches a set of known MD5s (possibly user defined).
+
+### REQUIRED ATTRIBUTES
+- TSK_SET_NAME (Name of hashset containing the file's MD5)
+
+### OPTIONAL ATTRIBUTES
+- TSK_COMMENT (Additional comments about the hit)
+
+
+
+---
+## TSK_INSTALLED_PROG
+Details about an installed program. 
+
+### REQUIRED ATTRIBUTES
+- TSK_PROG_NAME (Name of the installed program)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (A date and time associated with the installed program, e.g., the last modified time, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_CREATED (When the program was installed, in seconds since 1970-01-01T00:00:00Z)
+- TSK_PATH (Path to the installed program in the data source)
+- TSK_PATH_SOURCE (Path to an Android Package Kit (APK) file for an Android program)
+- TSK_PERMISSIONS (Permissions of the installed program)
+
+
+
+---
+## TSK_INTERESTING_ARTIFACT_HIT
+Indicates that the source artifact matches some set of criteria which deem it interesting. Artifacts with this meta artifact will be brought to the attention of the user.
+
+### REQUIRED ATTRIBUTES
+- TSK_ASSOCIATED_ARTIFACT (The source artifact)
+- TSK_SET_NAME (The name of the set of criteria which deemed this artifact interesting)
+
+### OPTIONAL ATTRIBUTES
+- TSK_COMMENT (Comment on the reason that the source artifact is interesting)
+- TSK_CATEGORY (The set membership rule that was satisfied)
+
+
+
+---
+## TSK_INTERESTING_FILE_HIT
+Indication that the source file matches some set of criteria (possibly user defined) which deem it interesting. Files with this artifact will be brought to the attention of the user.
+
+### REQUIRED ATTRIBUTES
+- TSK_SET_NAME (The name of the set of criteria which deemed this file interesting)
+
+### OPTIONAL ATTRIBUTES
+- TSK_COMMENT (Comment on the reason that the source artifact is interesting)=
+- TSK_CATEGORY (The set membership rule that was satisfied. I.e. a particular mime)
+
+
+
+---
+## TSK_KEYWORD_HIT
+Indication that the source artifact or file contains a keyword. Keywords are grouped into named sets.
+
+### REQUIRED ATTRIBUTES
+- TSK_KEYWORD (Keyword that was found in the artifact or file)
+- TSK_KEYWORD_SEARCH_TYPE (Specifies the type of match, e.g., an exact match, a substring match, or a regex match)
+- TSK_SET_NAME (The set name that the keyword was contained in)
+- TSK_KEYWORD_REGEXP (The regular expression that matched, only required for regex matches)
+- TSK_ASSOCIATED_ARTIFACT (Only required if the keyword hit source is an artifact)
+
+### OPTIONAL ATTRIBUTES
+- TSK_KEYWORD_PREVIEW (Snippet of text around keyword)
+
+
+
+---
+## TSK_MESSAGE
+A message that is found in some content.
+
+### REQUIRED ATTRIBUTES
+- TSK_TEXT (The text of the message)
+- TSK_MESSAGE_TYPE (E.g., WhatsApp Message, Skype Message, etc.)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (Timestamp the message was sent or received, in seconds since 1970-01-01T00:00:00Z) 
+- TSK_DIRECTION (Direction of the message, e.g., incoming or outgoing)
+- TSK_EMAIL_FROM (Email address of the sender)
+- TSK_EMAIL_TO (Email address of the recipient)
+- TSK_PHONE_NUMBER (A phone number associated with the message)
+- TSK_PHONE_NUMBER_FROM (The phone number of the sender)
+- TSK_PHONE_NUMBER_TO (The phone number of the recipient)
+- TSK_READ_STATUS (Status of the message, e.g., read or unread)
+- TSK_SUBJECT (Subject of the message)
+- TSK_THREAD_ID (ID for keeping threaded messages together)
+
+
+
+---
+## TSK_METADATA
+
+
+
+---
+## TSK_USER_CONTENT_SUSPECTED
+
+
+
+
+---
+## TSK_METADATA_EXIF
+EXIF metadata found in an image or audio file.
+
+### REQUIRED ATTRIBUTES
+- At least one of:
+- TSK_DATETIME_CREATED (Creation date of the file, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DEVICE_MAKE (Device make, generally the manufacturer, e.g., Apple)
+- TSK_DEVICE_MODEL (Device model, generally the product, e.g., iPhone)
+- TSK_GEO_ALTITUDE (The camera's altitude when the image/audio was taken)
+- TSK_GEO_LATITUDE (The camera's latitude when the image/audio was taken)
+- TSK_GEO_LONGITUDE (The camera's longitude when the image/audio was taken)
+
+
+---
+## TSK_OBJECT_DETECTED
+Indicates that an object was detected in a media file. Typically used by computer vision software to classify images.
+
+### REQUIRED ATTRIBUTES
+- TSK_COMMENT (What was detected)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DESCRIPTION (Additional comments about the object or observer, e.g., what detected the object)
+
+
+
+---
+## TSK_OS_ACCOUNT
+Details about an operating system account recovered from the data source. Examples include user or administrator accounts.
+
+### REQUIRED ATTRIBUTES
+- TSK_ACCOUNT_TYPE (Account type, e.g., Administrator, User, etc.)
+- TSK_USER_NAME (The user name associated with the account)
+
+### OPTIONAL ATTRIBUTES
+- TSK_ACCOUNT_SETTINGS (Account settings such as if the account is set to auto lock or requires a home directory)
+- TSK_COUNT (Number of logins)
+- TSK_DATETIME_ACCESSED (Datetime of last login, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_CREATED (Datetime of account creation, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_PASSWORD_FAIL (Datetime of the last failed login, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_PASSWORD_RESET (Datetime of last password reset, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DESCRIPTION (Description of the account, e.g., "My personal school account")
+- TSK_DISPLAY_NAME (Full name of the user associated with the account)
+- TSK_EMAIL (Email address associated with the account)
+- TSK_FLAG (Account flags such as indication that the account is a server trust account) 
+- TSK_GROUPS (Groups that this account is included in)
+- TSK_PASSWORD_HINT (The password hint description)
+- TSK_PASSWORD_SETTINGS (Password settings such as if the password has been set to expire or is required for login)
+- TSK_PATH (Home directory of the account. Ex: "C:/Users/John/")
+- TSK_USER_ID (User security identifier, e.g., SID)
+- TSK_NAME (Name of person associated with the account)
+
+
+
+---
+## TSK_OS_INFO
+Details about an operating system recovered from the data source.
+
+### REQUIRED ATTRIBUTES
+- TSK_PROG_NAME (Name of the OS)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (Datetime of the OS installation, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DOMAIN (Windows domain for a Windows OS)
+- TSK_ORGANIZATION (Registered organization for the OS installation)
+- TSK_OWNER (Registered owner of the OS installation)
+- TSK_PATH (System root for the OS installation)
+- TSK_PROCESSOR_ARCHITECTURE (Details about the processor architecture as captured by the OS)
+- TSK_NAME (Name of computer that the OS was installed on)
+- TSK_PRODUCT_ID (Product ID for the OS installation)
+- TSK_TEMP_DIR (Temp directory for the OS)
+- TSK_VERSION (Version of the OS)
+
+
+
+---
+## TSK_PROG_RUN
+The number of times a program/application was run.
+
+### REQUIRED ATTRIBUTES
+- TSK_PROG_NAME (Name of the application)
+- TSK_COUNT (Number of times program was run, should be atleast 1)
+
+### OPTIONAL ATTRIBUTES
+- TSK_ASSOCIATED_ARTIFACT
+- TSK_DATETIME (Timestamp that application was run last, in seconds since 1970-01-01T00:00:00Z)
+
+
+
+---
+## TSK_RECENT_OBJECT
+Indicates recently accessed content. Example: Recent Documents or Recent Downloads.
+
+### REQUIRED ATTRIBUTES
+- TSK_PATH (Path to the recent object content in the data source)
+- TSK_DATETIME_ACCESSED (Timestamp that the content was last accessed at, in seconds since 1970-01-01T00:00:00Z)
+
+### OPTIONAL ATTRIBUTES
+- TSK_PATH_ID (ID of the file instance in the data source)
+- TSK_PROG_NAME (Application or application extractor that stored this object as recent)
+- TSK_DATETIME (A timestamp associated with the content, in seconds since 1970-01-01T00:00:00Z. Ex: creation time)
+- TSK_NAME (If found in the registry, the name of the attribute)
+- TSK_VALUE(If found in the registry, the value of the attribute)
+
+
+
+---
+## TSK_REMOTE_DRIVE
+Details about a remote drive found in the data source.
+
+### REQUIRED ATTRIBUTES
+- TSK_REMOTE_PATH (Fully qualified UNC path to the remote drive)
+
+### OPTIONAL ATTRIBUTES
+- TSK_LOCAL_PATH (The local path of this remote drive. This path may be mapped, ex. �D:/' or �F:/')
+
+
+
+---
+## TSK_SERVICE_ACCOUNT
+An application or web user account.
+
+### REQUIRED ATTRIBUTES
+- TSK_PROG_NAME (The name of the service, i.e. Netflix)
+- TSK_USER_ID (User ID of the service account)
+
+### OPTIONAL ATTRIBUTES
+- TSK_CATEGORY (Type of service. I.e. Web, TV, Messaging)
+- TSK_DATETIME_CREATED (Timestamp that this service account was created, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DESCRIPTION (Name of the mailbox, if this is an email account)
+- TSK_DOMAIN
+- TSK_EMAIL_REPLYTO (Email reply to address, if this is an email account)
+- TSK_NAME (Display name of the user account)
+- TSK_PASSWORD (Password of the service account)
+- TSK_PATH (Path to the application installation, if it is local)
+- TSK_SERVER_NAME (Name of the mail server, if this is an email account)
+- TSK_URL (Url of the service, if the service is web based)
+- TSK_URL_DECODED
+- TSK_USER_NAME (User name of the service account)
+
+
+
+---
+## TSK_SIM_ATTACHED
+Details about a SIM card that was physically attached to the device. This event may be stored by an application or OS.
+
+### REQUIRED ATTRIBUTES
+- At least one of:
+- TSK_ICCID (ICCID number of this SIM card)
+- TSK_IMSI (IMSI number of this SIM card)
+
+### OPTIONAL ATTRIBUTES
+- None.
+
+
+
+---
+## TSK_SPEED_DIAL_ENTRY
+A speed dial entry found in an application, file or database.
+
+### REQUIRED ATTRIBUTES
+- TSK_PHONE_NUMBER (Phone number of the speed dial entry)
+
+### OPTIONAL ATTRIBUTES
+- TSK_NAME_PERSON (Contact name of the speed dial entry)
+- TSK_SHORTCUT (Keystroke shortcut)
+
+
+
+---
+## TSK_TL_EVENT
+A special case artifact intended to be used by the Timeline UI.
+
+### REQUIRED ATTRIBUTES
+- TSK_TL_EVENT_TYPE (The type of the event, e.g., 
+- TSK_DATETIME (The time
+
+### OPTIONAL ATTRIBUTES
+- TSK_DESCRIPTION ?
+
+
+
+---
+## TSK_USER_CONTENT_SUSPECTED
+An indication that some media file content was generated by the user.
+
+### REQUIRED ATTRIBUTES
+- TSK_DESCRIPTION (Description of the entry, such as a note)
+
+### OPTIONAL ATTRIBUTES
+- None.
+
+
+
+---
+## TSK_VERIFICATION_FAILED
+An indication that some data did not pass verification. One example would be verifying a SHA-1 hash.
+
+### REQUIRED ATTRIBUTES
+- TSK_COMMENT (Reason for failure, what failed)
+
+### OPTIONAL ATTRIBUTES
+- None.
+
+
+
+---
+## TSK_WEB_BOOKMARK
+A web bookmark entry found in an application, file or database.
+
+### REQUIRED ATTRIBUTES
+- TSK_URL (Bookmarked URL)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME_CREATED (Timestamp that this web bookmark was created, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DOMAIN (Domain of the bookmarked URL)
+- TSK_PROG_NAME (Name of application or application extractor that stored this web bookmark entry)
+- TSK_NAME (Name of the bookmark entry)
+- TSK_TITLE (Title of the web page that was bookmarked)
+
+
+
+---
+## TSK_WEB_CACHE
+A web cache entry found in an application, file or database. The resource that was cached may or may not be present in the data source.
+
+### REQUIRED ATTRIBUTES
+- TSK_PATH (Path to the source cache file. There are typically many cache files which each contain many cached resources)
+- TSK_URL (URL of the resource cached in this entry)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME_CREATED (Creation date of the cache entry)
+- TSK_HEADERS (HTTP Headers on cache entry)
+- TSK_PATH_ID (Object id of the source cache file)
+
+
+
+---
+## TSK_WEB_COOKIE
+A web cookie found in an application, file or database.
+
+### REQUIRED ATTRIBUTES
+- TSK_URL (Source URL of the web cookie)
+- TSK_NAME (The web cookie name attribute, ex. sessionToken)
+- TSK_VALUE (The web cookie value attribute)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME_CREATED (Datetime this web cookie was created, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_END (Expiration datetime of the web cookie, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_START (Datetime this web cookie session was started, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DOMAIN (The domain this web cookie serves)
+- TSK_PROG_NAME (Name of the application or application extractor that stored this web cookie)
+- TSK_PATH (Path to the file containing the web cookie in the data source)
+
+
+
+---
+## TSK_WEB_DOWNLOAD
+A web download entry found in an application, file or database. The downloaded resource may or may not be present in the data source.
+
+### REQUIRED ATTRIBUTES
+- TSK_URL (URL that hosts this downloaded resource)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME_ACCESSED (Last accessed timestamp, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DOMAIN (Domain that hosted this downloaded resource)
+- TSK_PATH_ID (ID of the file instance in the data source)
+- TSK_PATH (Path to the downloaded resource in the datasource)
+- TSK_PROG_NAME (Name of the application or application extractor that downloaded this resource)
+
+
+
+---
+## TSK_WEB_FORM_ADDRESS
+Contains autofill data for a person's address. Form data is usually saved by a web browser.
+
+### REQUIRED ATTRIBUTES
+- TSK_LOCATION (The address of the person. Ex: 123 Main St.)
+
+### OPTIONAL ATTRIBUTES
+- TSK_COUNT (Number of times this web form data was used)
+- TSK_DATETIME_ACCESSED (Last accessed timestamp of this web form data, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_MODIFIED (Last modified timestamp of this web form data, in seconds since 1970-01-01T00:00:00Z)
+- TSK_EMAIL (Email of the person that this address is associated with)
+- TSK_NAME_PERSON (Name of the person that this address is associated with)
+- TSK_PHONE_NUMBER (Phone number of the person that this address is associated with)
+
+
+
+---
+## TSK_WEB_FORM_AUTOFILL
+Contains autofill data for a web form. Form data is usually saved by a web browser. Each field value pair in the form should be stored in seperate artifacts.
+
+### REQUIRED ATTRIBUTES
+- One pair of:
+- TSK_NAME (Name of the autofill field)
+- TSK_VALUE (Value of the autofill field)
+
+### OPTIONAL ATTRIBUTES
+- TSK_COUNT (Number of times this web form data has been used)
+- TSK_DATETIME_ACCESSED (Datetime this web form data was last accessed, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DATETIME_CREATED (Datetime this web form autofill data was created, in seconds since 1970-01-01T00:00:00Z)
+
+
+
+---
+## TSK_WEB_HISTORY
+A web history entry in an application, file or database. This indicates that the device or some user visited the web page.
+
+### REQUIRED ATTRIBUTES
+- TSK_URL (The visited URL)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME_ACCESSED (The datetime this URL was accessed, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DOMAIN (The domain name of the URL)
+- TSK_PROG_NAME (The application or application extractor that stored this web history entry)
+- TSK_REFERRER (The URL of the web page that linked to this page)
+- TSK_TITLE (Title of the web page that was visited)
+- TSK_URL_DECODED
+- TSK_USER_NAME (Name of the user that viewed the web page)
+
+
+
+---
+## TSK_WEB_SEARCH_QUERY
+Details about a web search query that was found in an application, file or database.
+
+### REQUIRED ATTRIBUTES
+- TSK_TEXT (Web search query text)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME_ACCESSED (The datetime this web search query was last used, in seconds since 1970-01-01T00:00:00Z)
+- TSK_DOMAIN (Domain of the search engine used to execute the query)
+- TSK_PROG_NAME (Application or application extractor that stored the web search query)
+
+
+
+---
+## TSK_WIFI_NETWORK
+Details about a WiFi network. These may be stored by an application or OS upon connection.
+
+### REQUIRED ATTRIBUTES
+- TSK_SSID (The name of the wifi network)
+
+### OPTIONAL ATTRIBUTES
+- TSK_DATETIME (Timestamp about this WiFi network, in seconds since 1970-01-01T00:00:00Z. This timestamp could be last connected time or creation time)
+- TSK_DEVICE_ID (String that uniquely identifies the wifi network)
+
+
+
+---
+## TSK_WIFI_NETWORK_ADAPTER
+Details about a WiFi adapter. These may be stored by an application or OS.
+
+### REQUIRED ATTRIBUTES
+- TSK_MAC_ADDRESS (Mac address of the adapter)
+
+### OPTIONAL ATTRIBUTES
+- None.
+
+
+
+
+*/
\ No newline at end of file
diff --git a/bindings/java/doxygen/blackboard.dox b/bindings/java/doxygen/blackboard.dox
index 3130710d5c61aa41fb9068394f298c13b5dce0f3..602b88e5ae52c43f342f2261bbb876cb7cdfc5da 100644
--- a/bindings/java/doxygen/blackboard.dox
+++ b/bindings/java/doxygen/blackboard.dox
@@ -6,22 +6,15 @@ The blackboard allows modules (in Autopsy or other frameworks) to communicate an
 
 \subsection jni_bb_concepts Concepts
 
-The blackboard is a collection of <em>artifacts</em>.  Each artifact has a type, such as web browser history, EXIF, or GPS track points. The Sleuth Kit has many artifact types already defined (see org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE) and you can also create your own. 
+The blackboard is a collection of <em>artifacts</em>.  Each artifact has a type, such as web browser history, EXIF, or GPS track points. The Sleuth Kit has many artifact types already defined (see org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE and the \ref artifact_catalog_page "artifact catalog") and you can also \ref jni_bb_artifact2 "create your own". 
 
-Each artifact has a set of name-value pairs called <em>attributes</em>.  Attributes also have types, such as URL, Created Date, or Device Make. The Sleuth Kit has many attribute types already defined (see org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE) and you can also create your own. 
+Each artifact has a set of name-value pairs called <em>attributes</em>.  Attributes also have types, such as URL, Created Date, or Device Make. The Sleuth Kit has many attribute types already defined (see org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE) and you can also create your own.  See the \ref artifact_catalog_page "artifact catalog" for a list of artifacts and the attributes that should be associated with each.
 
 When a module wants to store its results in the blackboard, it makes an artifact of the correct type and then adds attributes to it. Other modules can then query the blackboard for artifacts of a given type or artifacts associated with a given file. 
 
+There are two special types of artifacts that are used a bit differently than the rest. The first is the org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_GEN_INFO artifact.  A Content object should have only one artifact of this type and it is used to store single attributes that are not related to each other and that do not need their own artifact. There are special methods to access this artifact to ensure that only a single TSK_GEN_INFO artifact is created per Content object and that you get a cached version of the artifact. These methods will be given in the relevant sections below.
 
-
-\subsection jni_bb_geninfo General Information Artifact
-
-One artifact type deserves special focus. It is the org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_GEN_INFO artifact.  A Content object should have only one artifact of this type and it is used to store single attributes that are not related to each other and that do not need their own artifact.  The most notable use of this artifact is to store the file type, using the 
-org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_FILE_TYPE_SIG.  
-
-There are special methods on the Content object, such as org.sleuthkit.datamodel.Content.getGenInfoArtifact() and org.sleuthkit.datamodel.Content.getGenInfoAttributes() that you should use to ensure that only a single TSK_GEN_INFO artifact is created per Content object and to ensure you get a cached version of the artifact. 
-
-
+The second special type of artifact is the TSK_ASSOCIATED_OBJECT. All artifacts are created as the child of a file or artifact. This TSK_ASSOCIATED_OBJECT is used to make additional relationships with files and artifacts apart from this parent-child relationship. See \ref jni_bb_associated_object section below.
 
 \section jni_bb_access Accessing the Blackboard
 
@@ -41,10 +34,7 @@ If you want to create an attribute in the TSK_GEN_INFO artifact, use org.sleuthk
 
 Next, you need to make attributes and add them to the artifact.  Attributes are created by making a new instance of org.sleuthkit.datamodel.BlackboardAttribute using one of the various constructors. After you create one with the correct type and value, you add it to the artifact using org.sleuthkit.datamodel.BlackboardArtifact.addAttribute() (or org.sleuthkit.datamodel.BlackboardArtifact.addAttributes() if you have several to add - it’s faster). 
 
-
-
-
-\subsection jni_bb_artifact2 Creating Multiple Artifacts or Multiple Attributes
+\subsubsection jni_bb_artifact2 Creating Multiple Artifacts or Multiple Attributes
 
 In some cases, it may not be clear if you should post multiple single-attribute artifacts for a file or post a single multiple-attribute artifact.  
 Here are some guidelines:
@@ -52,7 +42,50 @@ Here are some guidelines:
  - If a single file is associated with multiple items of the same type (e.g., log entries in a log file, bookmarks in a bookmark file, cookies in a cookie database), then each instance should be posted as a separate artifact so that you can differentiate them and keep all related attributes clearly grouped (e.g., it is clear which date goes with which log entry).  
  - All attributes in artifacts other than in org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_GEN_INFO artifacts should be closely related to each other.  
 
-
+\subsubsection jni_bb_artifact_helpers Artifact Helpers
+
+Artifact helpers are a set of classes that make it easier for module developers to create artifacts.
+These classes provide methods that abstract the details of artifacts and attributes, and provide simpler and more readable API.
+
+The following helpers are available:
+
+<ul>
+<li>org.sleuthkit.datamodel.blackboardutils.ArtifactsHelper - provides methods for some creating some general artifacts
+<ul>
+<li>addGPSLocation(): creates TSK_GPS_TRACKPOINT artifact
+<li>addInstalledPrograms(): creates TSK_INSTALLED_PROG artifact
+</ul></ul>
+
+<ul>
+<li>org.sleuthkit.datamodel.blackboardutils.WebBrowserArtifactsHelper - provides methods for some creating web browser related artifacts
+<ul>
+<li>addWebBookmark(): creates TSK_WEB_BOOKMARK artifact for browser bookmarks
+<li>addWebCookie(): creates TSK_WEB_COOKIE artifact for browser cookies
+<li>addWebDownload(): creates TSK_WEB_DOWNLOAD artifact for web downloads.
+<li>addWebFormAddress(): creates TSK_WEB_FORM_ADDRESS artifact for form address data
+<li>addWebFormAutofill(): creates TSK_WEB_FORM_AUTOFILL artifact for autofill data
+<li>addWebHistory(): creates TSK_WEB_HISTORY artifact for web history.
+</ul></ul>
+
+<ul>
+<li>org.sleuthkit.datamodel.blackboardutils.CommunicationArtifactsHelper - provides methods for communication related artifacts: contacts, call logs, messages.
+<ul>
+<li>addCalllog(): creates TSK_CALLLOG artifact for call logs.
+<li>addContact() creates TSK_CONTACT artifact for contacts.
+<li>addMessage() creates a TSK_MESSAGE artifact for messages.
+<li>addAttachments() adds attachments to a message.
+</ul></ul>
+
+\subsubsection jni_bb_associated_object Associated Objects
+
+Artifacts should be created as children of the file that they were derived or parsed from. For example, a TSK_WEB_DOWNLOAD artifact would be a child of the browser's SQLite database that was parsed. This creates a relationship between the source file and the artifact. But, sometimes you also want to make a relationship between the artifact and another file (or artifact). This is where the TSK_ASSOCIATED_OBJECT artifact comes in.
+
+For example, suppose you have a module that parses a SQLite database that has a log of downloaded files. Each entry might contain the URL the file was downloaded from, timestamp information, and the location the file was saved to on disk. This data would be saved in a TSK_WEB_DOWNLOAD artifact that would be a child of the SQLite database. But suppose the downloaded file also exists in our image. It would be helpful to link that file to our TSK_WEB_DOWNLOAD artifact to show when and where it was download from.
+
+We achieve this relationship by creating a TSK_ASSOCIATED_OBJECT artifact on the downloaded file. This artifact stores the ID of the TSK_WEB_DOWNLOAD artifact in TSK_ASSOCIATED_ARTIFACT attribute so we have a direct link from the file to the artifact that shows where it came from.
+ 
+\image html associated_object.png
+ 
 \subsection jni_bb_query  Querying the Blackboard
 
 You can find artifacts using a variety of ways:
diff --git a/bindings/java/doxygen/images/associated_object.png b/bindings/java/doxygen/images/associated_object.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4e5621ef00481f8bc1b279f5c292599e7a20622
Binary files /dev/null and b/bindings/java/doxygen/images/associated_object.png differ
diff --git a/bindings/java/doxygen/main.dox b/bindings/java/doxygen/main.dox
index 74d39099e2cccc7be24ac508cb55e56c0743f63b..45314c50f742d85bacc6315223297ac3f44f7de1 100644
--- a/bindings/java/doxygen/main.dox
+++ b/bindings/java/doxygen/main.dox
@@ -38,6 +38,7 @@ You can also access the data in its tree form by starting with org.sleuthkit.dat
 \section main_other Other Topics
 
 - \subpage mod_bbpage is where analysis modules (such as those in Autopsy) can post and save their results. 
+- The \subpage artifact_catalog_page gives a list of the current artifacts and attributes used on \ref mod_bbpage.
 - \subpage mod_compage is where analysis modules can store and retrieve communications-related data. 
 - Refer to \subpage query_database_page if you are going to use one of the SleuthkitCase methods that requires you to specify a query. 
 - Refer to \subpage insert_and_update_database_page if you are a Sleuth Kit developer and want to avoid database issues.