diff --git a/DocumentDB.Spatial.Sql.dll b/DocumentDB.Spatial.Sql.dll
new file mode 100644
index 0000000..f1a0ea5
Binary files /dev/null and b/DocumentDB.Spatial.Sql.dll differ
diff --git a/Microsoft.Azure.Documents.ServiceInterop.dll b/Microsoft.Azure.Documents.ServiceInterop.dll
new file mode 100644
index 0000000..3df189a
Binary files /dev/null and b/Microsoft.Azure.Documents.ServiceInterop.dll differ
diff --git a/README.md b/README.md
index 9ee05a7..563b34c 100644
--- a/README.md
+++ b/README.md
@@ -1,277 +1,25 @@
-# Microsoft Azure DocumentDB Java SDK
+# Developing a Java app using Azure Cosmos DB
+Azure Cosmos DB is a globally distributed multi-model database. One of the supported APIs is the DocumentDB API, which provides a JSON document model with SQL querying and JavaScript procedural logic. This sample shows you how to use the Azure Cosmos DB with the DocumentDB API to store and access data from a Java application.
 
-![](https://img.shields.io/maven-central/v/com.microsoft.azure/azure-documentdb.svg)
-![](https://img.shields.io/github/issues/azure/azure-documentdb-java.svg)
+## Running this sample
 
-This project provides a client library in Java that makes it easy to interact with Azure DocumentDB. For documentation please see the Microsoft Azure [Java Developer Center](http://azure.microsoft.com/en-us/develop/java/) and the [JavaDocs](http://dl.windowsazure.com/documentdb/javadoc).
+* Before you can run this sample, you must have the following prerequisites:
 
-## Disclaimer
-The implementation in this project is intended for reference purpose only and does not reflect the latest official Azure DocumentDB Java SDK released on Maven repository.  
+   * An active Azure account. If you don't have one, you can sign up for a [free account](https://azure.microsoft.com/free/). Alternatively, you can use the [Azure Cosmos DB Emulator](https://azure.microsoft.com/documentation/articles/documentdb-nosql-local-emulator) for this tutorial.
+   * JDK 1.7+ (Run `apt-get install default-jdk` if you don't have JDK)
+   * Maven (Run `apt-get install maven` if you don't have Maven)
 
-## Consuming the official Microsoft Azure DocumentDB Java SDK
+* Next, substitute the endpoint and authorization key in Program.java with your Cosmos DB account's values. 
 
-To get the binaries of the latest official Microsoft Azure DocumentDB Java SDK as distributed by Microsoft, ready for use within your project, you can use Maven.
+* If Maven dependencies are not added to your project, then you should add it manually in pom.xml file under properties tab using values maven.compiler.source : 1.8 and maven.compiler.target : 1.8.
 
-    <dependency>
-    	<groupId>com.microsoft.azure</groupId>
-    	<artifactId>azure-documentdb</artifactId>
-    	<version>1.15.0</version>
-    </dependency>
+* From a command prompt or shell, run `mvn package` to compile and resolve dependencies.
 
-## Minimum Requirements
-* Java Development Kit 7
-* (Optional) Maven
+* From a command prompt or shell, run `mvn exec:java -D exec.mainClass=GetStarted.Program` to run the application.
 
-### Dependencies
-Dependencies will be added automatically if Maven is used. Otherwise, please download the dependencies from the pom.xml file and add them to your build path. 
+## More information
+- [Azure Cosmos DB](https://docs.microsoft.com/azure/cosmos-db/introduction)
+- [Azure Cosmos DB : DocumentDB API](https://docs.microsoft.com/azure/documentdb/documentdb-introduction)
+- [Azure DocumentDB Java SDK](https://docs.microsoft.com/azure/cosmos-db/documentdb-sdk-java)
+- [Azure DocumentDB Java SDK Reference Documentation](http://azure.github.io/azure-documentdb-java/)
 
-## Usage
-
-To use this SDK to call Azure DocumentDB, you need to first [create an account](http://azure.microsoft.com/en-us/documentation/articles/documentdb-create-account/).
-
-You can follow this [tutorial](http://azure.microsoft.com/en-us/documentation/articles/documentdb-java-application/) to help you get started.
-
-```java
-import java.io.IOException;
-import java.util.List;
-
-import com.google.gson.Gson;
-import com.microsoft.azure.documentdb.ConnectionPolicy;
-import com.microsoft.azure.documentdb.ConsistencyLevel;
-import com.microsoft.azure.documentdb.Database;
-import com.microsoft.azure.documentdb.Document;
-import com.microsoft.azure.documentdb.DocumentClient;
-import com.microsoft.azure.documentdb.DocumentClientException;
-import com.microsoft.azure.documentdb.DocumentCollection;
-import com.microsoft.azure.documentdb.RequestOptions;
-
-public class HelloWorld {
-    // Replace with your DocumentDB end point and master key.
-    private static final String END_POINT = "[YOUR_ENDPOINT_HERE]";
-    private static final String MASTER_KEY = "[YOUR_KEY_HERE]";
-    
-    // Define an id for your database and collection
-    private static final String DATABASE_ID = "TestDB";
-    private static final String COLLECTION_ID = "TestCollection";
-
-    // We'll use Gson for POJO <=> JSON serialization for this sample.
-    // Codehaus' Jackson is another great POJO <=> JSON serializer.
-    private static Gson gson = new Gson();
-    public static void main(String[] args) throws DocumentClientException,
-            IOException {
-        // Instantiate a DocumentClient w/ your DocumentDB Endpoint and AuthKey.
-        DocumentClient documentClient = new DocumentClient(END_POINT,
-                MASTER_KEY, ConnectionPolicy.GetDefault(),
-                ConsistencyLevel.Session);
-
-        // Start from a clean state (delete database in case it already exists).
-        try {
-            documentClient.deleteDatabase("dbs/" + DATABASE_ID, null);
-        }
-        catch (Exception e) {
-            System.out.println(e.getMessage());
-        }
-
-        // Define a new database using the id above.
-        Database myDatabase = new Database();
-        myDatabase.setId(DATABASE_ID);
-
-        // Create a new database.
-        myDatabase = documentClient.createDatabase(myDatabase, null)
-                .getResource();
-
-
-        System.out.println("Created a new database:");
-        System.out.println(myDatabase.toString());
-        System.out.println("Press any key to continue..");
-        System.in.read();
-
-        // Define a new collection using the id above.
-        DocumentCollection myCollection = new DocumentCollection();
-        myCollection.setId(COLLECTION_ID);
-
-        // Set the provisioned throughput for this collection to be 1000 RUs.
-        RequestOptions requestOptions = new RequestOptions();
-        requestOptions.setOfferThroughput(1000);
-
-        // Create a new collection.
-        myCollection = documentClient.createCollection(
-                "dbs/" + DATABASE_ID, myCollection, requestOptions)
-                .getResource();
-
-        System.out.println("Created a new collection:");
-        System.out.println(myCollection.toString());
-        System.out.println("Press any key to continue..");
-        System.in.read();
-
-        // Create an object, serialize it into JSON, and wrap it into a
-        // document.
-        SomePojo allenPojo = new SomePojo("123", "Allen Brewer", "allen [at] contoso.com");
-        String allenJson = gson.toJson(allenPojo);
-        Document allenDocument = new Document(allenJson);
-
-        // Create the 1st document.
-        allenDocument = documentClient.createDocument(
-                "dbs/" + DATABASE_ID + "/colls/" + COLLECTION_ID, allenDocument, null, false)
-                .getResource();
-
-        System.out.println("Created 1st document:");
-        System.out.println(allenDocument.toString());
-        System.out.println("Press any key to continue..");
-        System.in.read();
-
-        // Create another object, serialize it into JSON, and wrap it into a
-        // document.
-        SomePojo lisaPojo = new SomePojo("456", "Lisa Andrews",
-                "lisa [at] contoso.com");
-        String somePojoJson = gson.toJson(lisaPojo);
-        Document lisaDocument = new Document(somePojoJson);
-
-        // Create the 2nd document.
-        lisaDocument = documentClient.createDocument(
-                "dbs/" + DATABASE_ID + "/colls/" + COLLECTION_ID, lisaDocument, null, false)
-                .getResource();
-
-        System.out.println("Created 2nd document:");
-        System.out.println(lisaDocument.toString());
-        System.out.println("Press any key to continue..");
-        System.in.read();
-
-        // Query documents
-        List<Document> results = documentClient
-                .queryDocuments(
-                        "dbs/" + DATABASE_ID + "/colls/" + COLLECTION_ID,
-                        "SELECT * FROM myCollection WHERE myCollection.email = 'allen [at] contoso.com'",
-                        null).getQueryIterable().toList();
-
-        System.out.println("Query document where e-mail address = 'allen [at] contoso.com':");
-        System.out.println(results.toString());
-        System.out.println("Press any key to continue..");
-        System.in.read();
-
-        // Replace Document Allen with Percy
-        allenPojo = gson.fromJson(results.get(0).toString(), SomePojo.class);
-        allenPojo.setName("Percy Bowman");
-        allenPojo.setEmail("Percy Bowman [at] contoso.com");
-
-        allenDocument = documentClient.replaceDocument(
-                allenDocument.getSelfLink(),
-                new Document(gson.toJson(allenPojo)), null)
-                .getResource();
-
-        System.out.println("Replaced Allen's document with Percy's contact information");
-        System.out.println(allenDocument.toString());
-        System.out.println("Press any key to continue..");
-        System.in.read();
-
-        // Delete Percy's Document
-        documentClient.deleteDocument(allenDocument.getSelfLink(), null);
-
-        System.out.println("Deleted Percy's document");
-        System.out.println("Press any key to continue..");
-        System.in.read();
-
-        // Delete Database
-        documentClient.deleteDatabase("dbs/" + DATABASE_ID, null);
-
-        System.out.println("Deleted database");
-        System.out.println("Press any key to continue..");
-        System.in.read();
-
-    }
-}
-
-```
-
-The sample code above depends on a sample Plain Old Java Object (POJO) class, which is defined as follows:
-
-```java
-class SomePojo {
-    private String id;
-    private String name;
-    private String email;
-
-    public SomePojo(String id, String name, String email) {
-          super();
-          this.id = id;
-          this.name = name;
-          this.email = email;
-    }
-
-    public String getEmail() {
-          return email;
-    }
-
-    public String getId() {
-          return id;
-    }
-
-    public String getName() {
-          return name;
-    }
-
-    public void setEmail(String email) {
-          this.email = email;
-    }
-
-    public void setId(String id) {
-          this.id = id;
-    }
-
-    public void setName(String name) {
-          this.name = name;
-    }
-}
-```
-
-The following code Illustrates how to create a partitioned collection and use the partition key to access documents:
-
-```java 
-// Create a partition key definition that specifies the path to the property
-// within a document that is used as the partition key.          
-PartitionKeyDefinition partitionKeyDef = new PartitionKeyDefinition();
-ArrayList<String> paths = new ArrayList<String>();
-paths.add("/id");
-partitionKeyDef.setPaths(paths);
-
-// Create a collection with the partition key definition and set the offer throughput
-// to 10100 RU per second.
-DocumentCollection myPartitionedCollection = new DocumentCollection();
-myPartitionedCollection.setId(COLLECTION_ID_PARTITIONED);
-myPartitionedCollection.setPartitionKey(partitionKeyDef);
-                      
-RequestOptions options = new RequestOptions();
-options.setOfferThroughput(10100);
-myPartitionedCollection = documentClient.createCollection(
-    myDatabase.getSelfLink(), myCollection, options).getResource();
-
-// Insert a document into the created collection.
-String document = "{ 'id': 'document1', 'description': 'this is a test document.' }";
-Document newDocument = new Document(document);
-newDocument = documentClient.createDocument(myPartitionedCollection.getSelfLink(),
-        newDocument, null, false).getResource();
-        
- // Read the created document, specifying the required partition key in RequestOptions.
-options = new RequestOptions();
-options.setPartitionKey(new PartitionKey("document1"));
-newDocument = documentClient.readDocument(newDocument.getSelfLink(), options).getResource();
-```
-
-Additional samples are provided in the unit tests.
-
-## Need Help?
-
-Be sure to check out the Microsoft Azure [Developer Forums on MSDN](https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=AzureDocumentDB) or the [Developer Forums on Stack Overflow](http://stackoverflow.com/questions/tagged/azure-documentdb) if you have trouble with the provided code.
-
-## Contribute Code or Provide Feedback
-
-If you would like to become an active contributor to this project please follow the instructions provided in [Azure Projects Contribution Guidelines](http://azure.github.io/guidelines.html).
-
-If you encounter any bugs with the library please file an issue in the [Issues](https://github.com/Azure/azure-documentdb-java/issues) section of the project.
-
-## Learn More
-
-* [Azure Developer Center](http://azure.microsoft.com/en-us/develop/java/)
-* [Azure DocumentDB Service](http://azure.microsoft.com/en-us/documentation/services/documentdb/)
-* [Azure DocumentDB Team Blog](http://blogs.msdn.com/b/documentdb/)
-* [JavaDocs](http://dl.windowsazure.com/documentdb/javadoc)
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..72fe98a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,31 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>GetStarted</groupId>
+  <artifactId>GetStarted</artifactId>
+  <version>0.0.1-SNAPSHOT</version>
+  <name>GetStarted</name>
+  <build>
+    <sourceDirectory>src</sourceDirectory>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <source>1.7</source>
+          <target>1.7</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+  <dependency>
+    <groupId>com.microsoft.azure</groupId>
+    <artifactId>azure-documentdb</artifactId>
+    <version>LATEST</version>
+</dependency>
+  </dependencies>
+  <properties>
+  	<maven.compiler.source>1.8</maven.compiler.source>
+  	<maven.compiler.target>1.8</maven.compiler.target>
+  </properties>
+</project>
diff --git a/src/GetStarted/Address.java b/src/GetStarted/Address.java
new file mode 100644
index 0000000..9724119
--- /dev/null
+++ b/src/GetStarted/Address.java
@@ -0,0 +1,32 @@
+package GetStarted;
+
+public class Address {
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getCounty() {
+        return county;
+    }
+
+    public void setCounty(String county) {
+        this.county = county;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    private String state;
+    private String county;
+    private String city;
+}
+
diff --git a/src/GetStarted/Marks.java b/src/GetStarted/Marks.java
new file mode 100644
index 0000000..2029e76
--- /dev/null
+++ b/src/GetStarted/Marks.java
@@ -0,0 +1,13 @@
+package GetStarted;
+
+public class Marks {
+    public String getSubject() {
+        return givenSubject;
+    }
+
+    public void setGivenSubject(String givenSubject) {
+        this.givenSubject = givenSubject;
+    }
+
+    private String givenSubject;
+}
diff --git a/src/GetStarted/Program.java b/src/GetStarted/Program.java
new file mode 100644
index 0000000..351e42e
--- /dev/null
+++ b/src/GetStarted/Program.java
@@ -0,0 +1,331 @@
+package GetStarted;
+
+import java.io.IOException;
+
+import com.microsoft.azure.documentdb.ConnectionPolicy;
+import com.microsoft.azure.documentdb.ConsistencyLevel;
+import com.microsoft.azure.documentdb.DataType;
+import com.microsoft.azure.documentdb.Database;
+import com.microsoft.azure.documentdb.Document;
+import com.microsoft.azure.documentdb.DocumentClient;
+import com.microsoft.azure.documentdb.DocumentClientException;
+import com.microsoft.azure.documentdb.DocumentCollection;
+import com.microsoft.azure.documentdb.FeedOptions;
+import com.microsoft.azure.documentdb.FeedResponse;
+import com.microsoft.azure.documentdb.Index;
+import com.microsoft.azure.documentdb.IndexingPolicy;
+import com.microsoft.azure.documentdb.RangeIndex;
+import com.microsoft.azure.documentdb.RequestOptions;
+
+public class Program 
+{
+
+    private DocumentClient client;
+
+    /**
+     * 
+     * @param args
+     *            command line arguments
+     * @throws DocumentClientException
+     *             exception
+     * @throws IOException 
+     */
+    public static void main(String[] args) 
+    {
+
+        try 
+        {
+            Program p = new Program();
+            p.getStartedDemo();
+            System.out.println(String.format("Demo complete, please hold while resources are deleted"));
+        } 
+        catch (Exception e) 
+        {
+            System.out.println(String.format("DocumentDB GetStarted failed with %s", e));
+        }
+    }
+
+    private void getStartedDemo() throws DocumentClientException, IOException 
+    {
+    	//Replace MY_END_POINT and MY_AUTHORIZATION_KEY values with your AzureCosmosDB Document Account
+        this.client = new DocumentClient("MY_END_POINT", "MY_AUTHORIZATION_KEY", new ConnectionPolicy(), ConsistencyLevel.Session);
+
+        this.createDatabaseIfNotExists("ExampleDB");
+        this.createDocumentCollectionIfNotExists("ExampleDB", "ExampleCollection");
+        
+        School InternationalSchool = getInternationalSchoolDocument();
+        this.createExampleDocumentIfNotExists("ExampleDB", "ExampleCollection", InternationalSchool);
+
+        School WorldWideSchool = getWorldWideSchoolDocument();
+        this.createExampleDocumentIfNotExists("ExampleDB", "ExampleCollection", WorldWideSchool);
+
+        this.executeSimpleQuery("ExampleDB", "ExampleCollection");
+        
+        this.replaceExampleDocument("ExampleDB", "ExampleCollection", "Hyderabad", WorldWideSchool);
+
+        this.upsertExampleDocument("ExampleDB","ExampleCollection",getInternationalSchoolDocument1());
+        
+        //this.client.deleteDatabase("/dbs/ExampleDB", null);
+        
+    }
+    
+	private School getInternationalSchoolDocument1() {
+    	School InternationalSchool1 = new School();
+    	InternationalSchool1.setId("Bala Sai International School");
+    	InternationalSchool1.setDistrict("Secunderabad");
+    	return InternationalSchool1;
+    }
+    
+
+    private School getInternationalSchoolDocument() {
+        School InternationalSchool = new School();
+        InternationalSchool.setId("JayaUsha International School");
+        InternationalSchool.setLastName("JayaUsha");
+
+        Teacher teacher1 = new Teacher();
+        teacher1.setFirstName("Chebrolu");
+
+        Teacher teacher2 = new Teacher();
+        teacher2.setFirstName("Sunnapu");
+
+        InternationalSchool.setTeachers(new Teacher[] { teacher1, teacher2 });
+
+        Student student1 = new Student();
+        student1.setFirstName("Harika");
+        student1.setGender("female");
+        student1.setGrade(5);
+
+        Marks mark1 = new Marks();
+        mark1.setGivenSubject("Fluffy");
+
+        student1.setMarks(new Marks[] { mark1 });
+
+        InternationalSchool.setDistrict("WA5");
+        Address address = new Address();
+        address.setCity("Seattle");
+        address.setCounty("King");
+        address.setState("WA");
+
+        InternationalSchool.setAddress(address);
+        InternationalSchool.setRegistered(true);
+
+        return InternationalSchool;
+    }
+
+    private School getWorldWideSchoolDocument() {
+        School WorldWideSchool = new School();
+        WorldWideSchool.setId("Pandu Public School");
+        WorldWideSchool.setLastName("Pandu");
+        WorldWideSchool.setDistrict("Rangareddy");
+
+        Teacher teacher1 = new Teacher();
+        teacher1.setLastName("Yakkali");
+        teacher1.setFirstName("Madhavi");
+        
+
+        Teacher teacher2 = new Teacher();
+        teacher2.setLastName("Yakkali");
+        teacher2.setFirstName("Raghava");
+
+        WorldWideSchool.setTeachers(new Teacher[] { teacher1, teacher2 });
+
+        Student student1 = new Student();
+        student1.setFirstName("Bala");
+        student1.setLastName("Cheb");
+        student1.setGrade(8);
+
+        Marks marks1 = new Marks();
+        marks1.setGivenSubject("Java");
+
+        Marks marks2 = new Marks();
+        marks2.setGivenSubject("Shadow");
+
+        student1.setMarks(new Marks[] { marks1, marks2 });
+
+        Student student2 = new Student();
+        student2.setFirstName("Lisa");
+        student2.setLastName("Miller");
+        student2.setGrade(1);
+        student2.setGender("female");
+
+        WorldWideSchool.setStudents(new Student[] { student1, student2 });
+
+        Address address = new Address();
+        address.setCity("NY");
+        address.setCounty("Manhattan");
+        address.setState("NY");
+
+        WorldWideSchool.setAddress(address);
+        WorldWideSchool.setDistrict("NY23");
+        WorldWideSchool.setRegistered(true);
+        return WorldWideSchool;
+    }
+
+    private void createDatabaseIfNotExists(String databaseName) throws DocumentClientException, IOException 
+    {
+        String databaseLink = String.format("/dbs/%s", databaseName);
+
+        // Check to verify a database with the id=ExampleDB does not exist
+        try 
+        {
+            this.client.readDatabase(databaseLink, null);
+            this.writeToConsoleAndPromptToContinue(String.format("Found %s", databaseName));
+        } 
+        catch (DocumentClientException de) 
+        {
+            // If the database does not exist, create a new database
+            if (de.getStatusCode() == 404) 
+            {
+                Database database = new Database();
+                database.setId(databaseName);
+                
+                this.client.createDatabase(database, null);
+                this.writeToConsoleAndPromptToContinue(String.format("Created %s", databaseName));
+            } 
+            else 
+            {
+                throw de;
+            }
+        }
+    }
+
+    private void createDocumentCollectionIfNotExists(String databaseName, String collectionName) throws IOException, DocumentClientException 
+    {
+        String databaseLink = String.format("/dbs/%s", databaseName);
+        String collectionLink = String.format("/dbs/%s/colls/%s", databaseName, collectionName);
+
+        try 
+        {
+            this.client.readCollection(collectionLink, null);
+            writeToConsoleAndPromptToContinue(String.format("Found %s", collectionName));
+        } 
+        catch (DocumentClientException de) 
+        {
+            // If the document collection does not exist, create a new collection
+            if (de.getStatusCode() == 404) 
+            {
+                DocumentCollection collectionInfo = new DocumentCollection();
+                collectionInfo.setId(collectionName);
+
+                // Optionally, you can configure the indexing policy of a collection. 
+                // Here we configure collections for maximum query flexibility including string range queries.
+                
+                RangeIndex index = new RangeIndex(DataType.String);
+                index.setPrecision(-1);
+
+                collectionInfo.setIndexingPolicy(new IndexingPolicy(new Index[] { index }));
+
+                // DocumentDB collections can be reserved with throughput specified in request units/second.
+                // 1 RU is a normalized request equivalent to the read of a 1KB document. 
+                // Here we create a collection with 400 RU/s.
+                
+                RequestOptions requestOptions = new RequestOptions();
+                requestOptions.setOfferThroughput(400);
+
+                this.client.createCollection(databaseLink, collectionInfo, requestOptions);
+
+                this.writeToConsoleAndPromptToContinue(String.format("Created %s", collectionName));
+            } 
+            else 
+            {
+                throw de;
+            }
+        }
+
+    }
+
+    private void createExampleDocumentIfNotExists(String databaseName, String collectionName, School school)
+            throws DocumentClientException, IOException {
+        try {
+            String documentLink = String.format("/dbs/%s/colls/%s/docs/%s", databaseName, collectionName, school.getId());
+            this.client.readDocument(documentLink, new RequestOptions());
+        } catch (DocumentClientException de) {
+            if (de.getStatusCode() == 404) {
+                String collectionLink = String.format("/dbs/%s/colls/%s", databaseName, collectionName);
+                this.client.createDocument(collectionLink, school, new RequestOptions(), true);
+                this.writeToConsoleAndPromptToContinue(String.format("Created School %s", school.getId()));
+            } else {
+                throw de;
+            }
+        }
+    }
+    
+    private void createExampleDocumentIfNotExistsForUpsert(String databaseName, String collectionName, School school)
+            throws DocumentClientException, IOException {
+        try {
+            String documentLink = String.format("/dbs/%s/colls/%s/docs/%s", databaseName, collectionName, school.getId());
+            this.client.readDocument(documentLink, new RequestOptions());
+        } catch (DocumentClientException de) {
+            if (de.getStatusCode() == 404) {
+                String collectionLink = String.format("/dbs/%s/colls/%s", databaseName, collectionName);
+                this.client.createDocument(collectionLink, school, new RequestOptions(), true);
+                this.writeToConsoleAndPromptToContinue(String.format("Created School %s", school.getId()));
+            } else {
+            	replaceExampleDocument("ExampleDB", "ExampleCollection", "Hyderabad", school);
+            }
+        }
+    }
+
+    private void executeSimpleQuery(String databaseName, String collectionName) {
+        // Set some common query options
+        FeedOptions queryOptions = new FeedOptions();
+        queryOptions.setPageSize(-1);
+        queryOptions.setEnableCrossPartitionQuery(true);
+
+        String collectionLink = String.format("/dbs/%s/colls/%s", databaseName, collectionName);
+        FeedResponse<Document> queryResults = this.client.queryDocuments(collectionLink,
+                "SELECT * FROM School WHERE School.lastName = 'Pandu'", queryOptions);
+
+        System.out.println("Running SQL query...");
+        for (Document school : queryResults.getQueryIterable()) {
+            System.out.println(String.format("\tRead %s", school));
+        }
+    }
+
+    @SuppressWarnings("unused")
+    private void replaceExampleDocument(String databaseName, String collectionName, String District, School updatedSchool)
+            throws IOException, DocumentClientException {
+        try {
+        	updatedSchool.setDistrict("Mavuri");
+            this.client.replaceDocument(
+                    String.format("/dbs/%s/colls/%s/docs/%s", databaseName, collectionName, updatedSchool.getId()), updatedSchool,
+                    null);
+            writeToConsoleAndPromptToContinue(String.format("Replaced School %s", updatedSchool.getId()));
+            writeToConsoleAndPromptToContinue(String.format("Replaced %s", updatedSchool.getDistrict()));
+        } catch (DocumentClientException de) {
+            throw de;
+        }
+    }
+    
+    private void upsertExampleDocument(String databaseName, String collectionName, School upsertedSchool)
+            throws IOException, DocumentClientException {
+    	createExampleDocumentIfNotExistsForUpsert("ExampleDB", "ExampleCollection", upsertedSchool);
+    	upsertedSchool.setDistrict("Vijayawada");
+    	this.client.replaceDocument(
+                String.format("/dbs/%s/colls/%s/docs/%s", databaseName, collectionName, upsertedSchool.getId()), upsertedSchool,
+                null);
+    	writeToConsoleAndPromptToContinue(String.format("Upserted School %s", upsertedSchool.getId()));
+        writeToConsoleAndPromptToContinue(String.format("Upserted %s", upsertedSchool.getDistrict()));
+    	}
+    	
+    
+
+
+    @SuppressWarnings("unused")
+    private void deleteExampleDocument(String databaseName, String collectionName, String documentName) throws IOException,
+            DocumentClientException {
+        try {
+            this.client.deleteDocument(String.format("/dbs/%s/colls/%s/docs/%s", databaseName, collectionName, documentName), null);
+            writeToConsoleAndPromptToContinue(String.format("Deleted School %s", documentName));
+        } catch (DocumentClientException de) {
+            throw de;
+        }
+    }
+
+    private void writeToConsoleAndPromptToContinue(String text) throws IOException {
+        System.out.println(text);
+        System.out.println("Press any key to continue ...");
+        System.in.read();
+    }
+}
+
diff --git a/src/GetStarted/School.java b/src/GetStarted/School.java
new file mode 100644
index 0000000..aa14ab3
--- /dev/null
+++ b/src/GetStarted/School.java
@@ -0,0 +1,74 @@
+package GetStarted;
+
+public class School 
+{
+    public School() 
+    {
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getLastName() {
+        return lastName;
+    }
+
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+        
+    }
+
+    public Teacher[] getTeachers() {
+        return teachers;
+    }
+
+    public void setTeachers(Teacher[] teachers) {
+        this.teachers = teachers;
+    }
+
+    public Student[] getstudents() {
+        return students;
+    }
+
+    public void setStudents(Student[] students) {
+        this.students = students;
+    }
+
+    public Address getAddress() {
+        return address;
+    }
+
+    public void setAddress(Address address) {
+        this.address = address;
+    }
+
+    public boolean isRegistered() {
+        return isRegistered;
+    }
+
+    public void setRegistered(boolean isRegistered) {
+        this.isRegistered = isRegistered;
+    }
+
+    private String id;
+    private String lastName;
+    private String district;
+    private Teacher[] teachers;
+    private Student[] students;
+    private Address address;
+    private boolean isRegistered;
+	}
+
diff --git a/src/GetStarted/Student.java b/src/GetStarted/Student.java
new file mode 100644
index 0000000..5118ff1
--- /dev/null
+++ b/src/GetStarted/Student.java
@@ -0,0 +1,50 @@
+package GetStarted;
+
+public class Student {
+    public String getLastName() {
+        return LastName;
+    }
+
+    public void setLastName(String LastName) {
+        this.LastName = LastName;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    public int getGrade() {
+        return grade;
+    }
+
+    public void setGrade(int grade) {
+        this.grade = grade;
+    }
+
+    public Marks[] getMarks() {
+        return marks;
+    }
+
+    public void setMarks(Marks[] marks) {
+        this.marks = marks;
+    }
+
+    private String LastName;
+    private String firstName;
+    private String gender;
+    private int grade;
+    private Marks[] marks;
+}
+
diff --git a/src/GetStarted/Teacher.java b/src/GetStarted/Teacher.java
new file mode 100644
index 0000000..0b63f16
--- /dev/null
+++ b/src/GetStarted/Teacher.java
@@ -0,0 +1,30 @@
+package GetStarted;
+
+public class Teacher{
+
+    public Teacher() {
+    }
+
+    public Teacher(String firstName) {
+        this.firstName = firstName;
+    }
+
+    public String getLastName() {
+        return LastName;
+    }
+
+    public void setLastName(String LastName) {
+        this.LastName = LastName;
+    }
+
+    public String getFirstName() {
+        return firstName;
+    }
+
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+
+    private String LastName;
+    private String firstName;
+}