diff --git a/asterix-algebra/.gitignore b/asterix-algebra/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/asterix-algebra/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/AQLAPIServlet.java b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/AQLAPIServlet.java
new file mode 100644
index 0000000..2cb5f40
--- /dev/null
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/api/http/servlet/AQLAPIServlet.java
@@ -0,0 +1,39 @@
+package edu.uci.ics.asterix.api.http.servlet;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import edu.uci.ics.asterix.aql.base.Statement.Kind;
+
+public class AQLAPIServlet extends RESTAPIServlet {
+
+    private static final long serialVersionUID = 1L;
+
+    private static final String AQL_STMT_PARAM_NAME = "aql";
+
+    private static final List<Kind> allowedStatements = new ArrayList<>();
+
+    static {
+        for (Kind k : Kind.values()) {
+            allowedStatements.add(k);
+        }
+    }
+
+    @Override
+    protected String getQueryParameter(HttpServletRequest request) {
+        return request.getParameter(AQL_STMT_PARAM_NAME);
+    }
+
+    @Override
+    protected List<Kind> getAllowedStatements() {
+        return allowedStatements;
+    }
+
+    @Override
+    protected String getErrorMessage() {
+        throw new IllegalStateException();
+    }
+
+}
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
index 18c2775..bc72615 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
@@ -22,6 +22,7 @@
 import org.eclipse.jetty.servlet.ServletHolder;
 
 import edu.uci.ics.asterix.api.http.servlet.APIServlet;
+import edu.uci.ics.asterix.api.http.servlet.AQLAPIServlet;
 import edu.uci.ics.asterix.api.http.servlet.DDLAPIServlet;
 import edu.uci.ics.asterix.api.http.servlet.FeedDashboardServlet;
 import edu.uci.ics.asterix.api.http.servlet.FeedDataProviderServlet;
@@ -135,6 +136,7 @@
         context.addServlet(new ServletHolder(new QueryResultAPIServlet()), "/query/result");
         context.addServlet(new ServletHolder(new UpdateAPIServlet()), "/update");
         context.addServlet(new ServletHolder(new DDLAPIServlet()), "/ddl");
+        context.addServlet(new ServletHolder(new AQLAPIServlet()), "/aql");
     }
 
     private void setupFeedServer(AsterixExternalProperties externalProperties) throws Exception {
diff --git a/asterix-aql/.gitignore b/asterix-aql/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/asterix-aql/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/asterix-common/.gitignore b/asterix-common/.gitignore
deleted file mode 100644
index 073c9fa..0000000
--- a/asterix-common/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/target
-/target
-/target
diff --git a/asterix-doc/src/site/markdown/aql/manual.md b/asterix-doc/src/site/markdown/aql/manual.md
index 882d331..ab99f16 100644
--- a/asterix-doc/src/site/markdown/aql/manual.md
+++ b/asterix-doc/src/site/markdown/aql/manual.md
@@ -446,12 +446,13 @@
                       | SetStatement
                       | InsertStatement
                       | DeleteStatement
-                      | Query
+                      | Query                      
 
 In addition to expresssions for queries, AQL supports a variety of statements for data
 definition and manipulation purposes as well as controlling the context to be used in
-evaluating AQL expressions. 
-This section details the statement side of the AQL language.
+evaluating AQL expressions. AQL supports record-level ACID transactions that begin and terminate implicitly for each record inserted, deleted, or searched while a given AQL statement is being executed.
+
+This section details the statements supported in the AQL language.
 
 ### Declarations
  
diff --git a/asterix-doc/src/site/markdown/aql/primer.md b/asterix-doc/src/site/markdown/aql/primer.md
index 92fcb01..b254e46 100644
--- a/asterix-doc/src/site/markdown/aql/primer.md
+++ b/asterix-doc/src/site/markdown/aql/primer.md
@@ -883,6 +883,10 @@
 dataset where it resides, and another to insert the new replacement record (with the same primary key but with
 different field values for some of the associated data content).
 
+### Transaction Support
+
+AsterixDB supports record-level ACID transactions that begin and terminate implicitly for each record inserted, deleted, or searched while a given AQL statement is being executed. This is quite similar to the level of transaction support found in today's NoSQL stores. AsterixDB does not support multi-statement transactions, and in fact an AQL statement that involves multiple records can itself involve multiple independent record-level transactions. An example consequence of this is that, when an AQL statement attempts to insert 1000 records, it is possible that the first 800 records could end up being committed while the remaining 200 records fail to be inserted. This situation could happen, for example, if a duplicate key exception occurs as the 801st insertion is attempted. If this happens, AsterixDB will report the error (e.g., a duplicate key exception) as the result of the offending AQL insert statement, and the application logic above will need to take the appropriate action(s) needed to assess the resulting state and to clean up and/or continue as appropriate.
+
 ## Further Help ##
 That's it  You are now armed and dangerous with respect to semistructured data management using AsterixDB.
 
diff --git a/asterix-events/.gitignore b/asterix-events/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/asterix-events/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/asterix-external-data/.gitignore b/asterix-external-data/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/asterix-external-data/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/asterix-installer/.gitignore b/asterix-installer/.gitignore
deleted file mode 100644
index 19f2e00..0000000
--- a/asterix-installer/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/target
-/target
diff --git a/asterix-metadata/.gitignore b/asterix-metadata/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/asterix-metadata/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/asterix-om/.gitignore b/asterix-om/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/asterix-om/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/asterix-runtime/.gitignore b/asterix-runtime/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/asterix-runtime/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/asterix-test-framework/.gitignore b/asterix-test-framework/.gitignore
deleted file mode 100644
index 19f2e00..0000000
--- a/asterix-test-framework/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/target
-/target
diff --git a/asterix-tools/.gitignore b/asterix-tools/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/asterix-tools/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
diff --git a/asterix-transactions/.gitignore b/asterix-transactions/.gitignore
deleted file mode 100644
index ea8c4bf..0000000
--- a/asterix-transactions/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/target
