diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..205aa81
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,3 @@
+# Test
+script:
+ - sh -c 'cd jaggr && mvn clean test'
\ No newline at end of file
diff --git a/jaggr/pom.xml b/jaggr/pom.xml
new file mode 100644
index 0000000..43dc46d
--- /dev/null
+++ b/jaggr/pom.xml
@@ -0,0 +1,40 @@
+
+
+ 4.0.0
+
+ com.caffinc
+ jaggr
+ 1.0-SNAPSHOT
+ jaggr - JSON Aggregator
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.3
+
+
+ 1.7
+
+
+
+
+
+
+
+ com.google.code.gson
+ gson
+ 2.6.2
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
\ No newline at end of file
diff --git a/jaggr/src/main/java/com/caffinc/jaggr/core/Aggregation.java b/jaggr/src/main/java/com/caffinc/jaggr/core/Aggregation.java
new file mode 100644
index 0000000..cf8e5c2
--- /dev/null
+++ b/jaggr/src/main/java/com/caffinc/jaggr/core/Aggregation.java
@@ -0,0 +1,60 @@
+package com.caffinc.jaggr.core;
+
+import com.caffinc.jaggr.core.operations.Operation;
+import com.caffinc.jaggr.core.utils.FieldValueExtractor;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Aggregates list of objects based on operations
+ *
+ * @author Sriram
+ * @since 11/26/2016
+ */
+public class Aggregation {
+ private String _id;
+ private String[] idSplit;
+ private Map operationMap;
+
+ Aggregation(String _id, Map operationMap) {
+ this._id = _id;
+ this.idSplit = _id != null ? _id.split("\\.") : null;
+ this.operationMap = operationMap;
+ }
+
+ public List