diff --git a/package-lock.json b/package-lock.json
index 883f15c0cfda04ca8944828a94ec5f5c64dc46dc..99de7818e11ea8838a7d50d5147e588161f54573 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2559,9 +2559,9 @@
       }
     },
     "@concordant/c-crdtlib": {
-      "version": "0.0.7-1",
-      "resolved": "https://gitlab.inria.fr/api/v4/projects/18591/packages/npm/@concordant/c-crdtlib/-/@concordant/c-crdtlib-0.0.7-1.tgz",
-      "integrity": "sha1-lkVUeMFQAuVhS5pP4gjGdN4vaUs=",
+      "version": "1.0.0",
+      "resolved": "https://gitlab.inria.fr/api/v4/projects/18591/packages/npm/@concordant/c-crdtlib/-/@concordant/c-crdtlib-1.0.0.tgz",
+      "integrity": "sha1-rHTb+O9v9S4A24rhdoFC182Kbjo=",
       "requires": {
         "kotlin": "1.4.10",
         "kotlinx-serialization-kotlinx-serialization-core-jsLegacy": "1.0.0",
diff --git a/package.json b/package.json
index 5cef4c04747f9d476a36d8475e054040e667ac04..d289288abd3033e948900efa2636bbfb62146479 100644
--- a/package.json
+++ b/package.json
@@ -44,7 +44,7 @@
     "typescript": "^3.9.7"
   },
   "dependencies": {
-    "@concordant/c-crdtlib": "0.0.7-1",
+    "@concordant/c-crdtlib": "1.0.0",
     "@types/uuid": "^3.4.9",
     "apollo-server-express": "^2.19.0",
     "body-parser": "^1.19.0",
diff --git a/src/Utils/CRDTWrapper.ts b/src/Utils/CRDTWrapper.ts
index 32bd3d46f6381542bba453cf64f472ab645de443..3f285c71eb46f0456f9433103c7177cc95f8d7cf 100644
--- a/src/Utils/CRDTWrapper.ts
+++ b/src/Utils/CRDTWrapper.ts
@@ -28,8 +28,11 @@ export default class CRDTWrapper {
     return new CRDTWrapper(crdt.toJson());
   }
 
-  public static unwrap(wrapper: CRDTWrapper): any {
-    return crdtlib.crdt.DeltaCRDT.Companion.fromJson(wrapper.crdtJson);
+  public static unwrap(
+    wrapper: CRDTWrapper,
+    env?: crdtlib.utils.Environment
+  ): any {
+    return crdtlib.crdt.DeltaCRDT.Companion.fromJson(wrapper.crdtJson, env);
   }
 
   constructor(public crdtJson: string) {
diff --git a/src/service.ts b/src/service.ts
index 448d534c48a3f771e9f798ea8e5b6d49cc0f1faf..e8dd5424913eef4066d4414765d3a75ef38ee24b 100644
--- a/src/service.ts
+++ b/src/service.ts
@@ -150,6 +150,10 @@ app.use(
         basePath: "/api",
       });
     },
+    method: {
+      "Query.getObjects": "POST",
+      "Query.getObject": "POST",
+    },
   })
 );
 
diff --git a/test/CRDTs/PouchDBCRDTs.test.ts b/test/CRDTs/PouchDBCRDTs.test.ts
index 569526b069b8beca277ab09185ae6a7d9e8eab89..1bed77460132f50e36706edf7f0f08f427b91d1a 100644
--- a/test/CRDTs/PouchDBCRDTs.test.ts
+++ b/test/CRDTs/PouchDBCRDTs.test.ts
@@ -97,8 +97,8 @@ describe("Basic usage", () => {
       .get<CRDTWrapper>(TEST_KEY, () => defaultObject)
       .then(() => connection2.get<CRDTWrapper>(TEST_KEY))
       .then((obj: Document<CRDTWrapper>) => {
-        const newCRDT = CRDTWrapper.unwrap(obj.current());
-        newCRDT.increment(42, environment1.tick());
+        const newCRDT = CRDTWrapper.unwrap(obj.current(), environment1);
+        newCRDT.increment(42);
         return obj.update(CRDTWrapper.wrap(newCRDT)).save();
       })
       .then(() => connection2.get<CRDTWrapper>(TEST_KEY))
@@ -113,7 +113,10 @@ describe("Basic usage", () => {
   it("Conflict handler triggered on get", (done) => {
     TEST_KEY = uuid();
 
-    const client1DefaultObject = new crdtlib.crdt.PNCounter();
+    const client1DefaultObject = crdtlib.crdt.DeltaCRDTFactory.Companion.createDeltaCRDT(
+      "PNCounter",
+      environment1
+    );
     // default object is created by client2
     const client2DefaultObjectWrapped = CRDTWrapper.wrap(
       new crdtlib.crdt.PNCounter()
@@ -150,13 +153,13 @@ describe("Basic usage", () => {
       change: (key, newObj) => {
         connection1.cancel(sub);
         onlyAfter = true;
-        const crdt = CRDTWrapper.unwrap(newObj.current());
-        crdt.increment(40, environment2.tick());
+        const crdt = CRDTWrapper.unwrap(newObj.current(), environment2);
+        crdt.increment(40);
         newObj
           .update(CRDTWrapper.wrap(crdt))
           .save()
           .then(() => {
-            client1DefaultObject.increment(2, environment1.tick());
+            client1DefaultObject.increment(2);
             return remoteObj
               .update(CRDTWrapper.wrap(client1DefaultObject))
               .save()
@@ -241,7 +244,10 @@ describe("Test offline support with CRDTs", () => {
   it("Go offline and receive pending updates on reconnect", (done) => {
     jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
 
-    const client1DefaultObject = new crdtlib.crdt.PNCounter();
+    const client1DefaultObject = crdtlib.crdt.DeltaCRDTFactory.Companion.createDeltaCRDT(
+      "PNCounter",
+      environment1
+    );
     const client2DefaultObjectWrapped = CRDTWrapper.wrap(
       new crdtlib.crdt.PNCounter()
     );
@@ -274,13 +280,13 @@ describe("Test offline support with CRDTs", () => {
       change: (key, newObj) => {
         connection1.cancel(sub);
         onlyAfter = true;
-        const crdt = CRDTWrapper.unwrap(newObj.current());
-        crdt.increment(40, environment2.tick());
+        const crdt = CRDTWrapper.unwrap(newObj.current(), environment2);
+        crdt.increment(40);
         newObj
           .update(CRDTWrapper.wrap(crdt))
           .save()
           .then(() => {
-            client1DefaultObject.increment(2, environment1.tick());
+            client1DefaultObject.increment(2);
             return remoteObj
               .update(CRDTWrapper.wrap(client1DefaultObject))
               .save()