diff --git a/README.md b/README.md
index 6bc6a61..b859365 100644
--- a/README.md
+++ b/README.md
@@ -8,19 +8,19 @@ There are three folders in this repository:
 
 You can run the client from the top-level directory with `node client/index`. This file is a script which will send an HTTP request to the server.
 
-Think of the client as the _prover_ here. It needs to prove to the server that some `name` is in the `MERKLE_ROOT` on the server. 
+Think of the client as the _prover_ here. It needs to prove to the server that some `name` is in the `MERKLE_ROOT` on the server.
 
 ## Server
 
 You can run the server from the top-level directory with `node server/index`. This file is an express server which will be hosted on port 1225 and respond to the client's request.
 
-Think of the server as the _verifier_ here. It needs to verify that the `name` passed by the client is in the `MERKLE_ROOT`. If it is, then we can send the gift! 
+Think of the server as the _verifier_ here. It needs to verify that the `name` passed by the client is in the `MERKLE_ROOT`. If it is, then we can send the gift!
 
 ## Utils
 
 There are a few files in utils:
 
 - The `niceList.json` which contains all the names of the people who deserve a gift this year (this is randomly generated, feel free to add yourself and others to this list!)
-- The `example.js` script shows how we can generate a root, generate a proof and verify that some value is in the root using the proof. Try it out from the top-level folder with `node/example.js`
+- The `example.js` script shows how we can generate a root, generate a proof and verify that some value is in the root using the proof. Try it out from the top-level folder with `node utils/example.js`
 - The `MerkleTree.js` should look familiar from the Merkle Tree module! This one has been modified so you should not have to deal with any crypto type conversion. You can import this in your client/server
 - The `verifyProof.js` should also look familiar. This was the last stage in the module. You can use this function to prove a name is in the merkle root, as show in the example.
diff --git a/client/index.js b/client/index.js
index 28980e4..351e73e 100644
--- a/client/index.js
+++ b/client/index.js
@@ -1,17 +1,24 @@
-const axios = require('axios');
-const niceList = require('../utils/niceList.json');
-const MerkleTree = require('../utils/MerkleTree');
+const axios = require("axios");
+const niceList = require("../utils/niceList.json");
+const MerkleTree = require("../utils/MerkleTree");
 
-const serverUrl = 'http://localhost:1225';
+const serverUrl = "http://localhost:1225";
 
 async function main() {
-  // TODO: how do we prove to the server we're on the nice list? 
+  // TODO: how do we prove to the server we're on the nice list?
+  const name = "Mr. Otis Koelpin III";
+  const merkleTree = new MerkleTree(niceList);
+  console.log(typeof merkleTree.getRoot());
+  const index = niceList.indexOf(name);
+  const proof = merkleTree.getProof(index);
 
   const { data: gift } = await axios.post(`${serverUrl}/gift`, {
     // TODO: add request body parameters here!
+    leaf: name,
+    proof,
   });
 
   console.log({ gift });
 }
 
-main();
\ No newline at end of file
+main();
diff --git a/package-lock.json b/package-lock.json
index 70a452c..29fc2e4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,22 +6,11 @@
     "": {
       "name": "holiday-gift-list",
       "dependencies": {
-        "@faker-js/faker": "^7.6.0",
         "axios": "^1.2.0",
-        "body-parser": "^1.20.1",
         "ethereum-cryptography": "^1.1.2",
         "express": "^4.18.2"
       }
     },
-    "node_modules/@faker-js/faker": {
-      "version": "7.6.0",
-      "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz",
-      "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==",
-      "engines": {
-        "node": ">=14.0.0",
-        "npm": ">=6.0.0"
-      }
-    },
     "node_modules/@noble/hashes": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz",
@@ -785,11 +774,6 @@
     }
   },
   "dependencies": {
-    "@faker-js/faker": {
-      "version": "7.6.0",
-      "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz",
-      "integrity": "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw=="
-    },
     "@noble/hashes": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz",
diff --git a/server/index.js b/server/index.js
index cc302ca..d95f648 100644
--- a/server/index.js
+++ b/server/index.js
@@ -1,5 +1,5 @@
-const express = require('express');
-const verifyProof = require('../utils/verifyProof');
+const express = require("express");
+const verifyProof = require("../utils/verifyProof");
 
 const port = 1225;
 
@@ -8,19 +8,18 @@ app.use(express.json());
 
 // TODO: hardcode a merkle root here representing the whole nice list
 // paste the hex string in here, without the 0x prefix
-const MERKLE_ROOT = '';
+const MERKLE_ROOT = "ddd59a2ffccddd60ff47993312821cd57cf30f7f14fb82937ebe2c4dc78375aa";
 
-app.post('/gift', (req, res) => {
+app.post("/gift", (req, res) => {
   // grab the parameters from the front-end here
   const body = req.body;
 
-  // TODO: prove that a name is in the list 
-  const isInTheList = false;
-  if(isInTheList) {
-    res.send("You got a toy robot!");
-  }
-  else {
-    res.send("You are not on the list :(");
+  // TODO: prove that a name is in the list
+  const isInTheList = verifyProof(body.proof, body.leaf, MERKLE_ROOT);
+  if (isInTheList) {
+    res.send(`${body.leaf} You got a toy robot!`);
+  } else {
+    res.send(`${body.leaf} You are not on the list :(`);
   }
 });
 
diff --git a/utils/example.js b/utils/example.js
index 7dcf6ff..cd40588 100644
--- a/utils/example.js
+++ b/utils/example.js
@@ -1,6 +1,6 @@
-const MerkleTree = require('./MerkleTree');
-const niceList = require('./niceList');
-const verifyProof = require('./verifyProof');
+const MerkleTree = require("./MerkleTree");
+const niceList = require("./niceList");
+const verifyProof = require("./verifyProof");
 
 // create the merkle tree for the whole nice list
 const merkleTree = new MerkleTree(niceList);
@@ -8,12 +8,12 @@ const merkleTree = new MerkleTree(niceList);
 // get the root
 const root = merkleTree.getRoot();
 
-// find the proof that norman block is in the list 
-const name = 'Norman Block';
-const index = niceList.findIndex(n => n === name);
+// find the proof that norman block is in the list
+const name = "Norman Block";
+const index = niceList.findIndex((n) => n === name);
 const proof = merkleTree.getProof(index);
 
 // verify proof against the Merkle Root
-console.log( verifyProof(proof, name, root) ); // true, Norman Block is in the list!
+console.log(verifyProof(proof, name, root)); // true, Norman Block is in the list!
 
-// TRY IT OUT: what happens if you try a name not in the list, or a fake proof?
\ No newline at end of file
+// TRY IT OUT: what happens if you try a name not in the list, or a fake proof?