diff --git a/src/cmd/.DS_Store b/src/cmd/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..6f607d574d64ef79e6104d3a860a797954d0f7aa
Binary files /dev/null and b/src/cmd/.DS_Store differ
diff --git a/src/cmd/client/client.go b/src/cmd/client/client.go
new file mode 100644
index 0000000000000000000000000000000000000000..48ee5c7e920ac1881bf99cdda362059cb4197963
--- /dev/null
+++ b/src/cmd/client/client.go
@@ -0,0 +1,35 @@
+package main
+
+import (
+	"CS425/cs-425-mp1/src/coordinator"
+	"context"
+	"log"
+	"os"
+
+	"google.golang.org/grpc"
+)
+
+func main() {
+
+	var conn *grpc.ClientConn
+	conn, err := grpc.Dial("localhost:9000", grpc.WithInsecure())
+	if err != nil {
+		log.Fatalf("did not connect: %s", err)
+	}
+	defer conn.Close()
+
+	c := coordinator.NewCoordinatorServiceClient(conn)
+
+	// take input as grep -Ec arjun .log or as grep -c arjun .log
+	clientInputFlag := os.Args[2]
+	clientInputString := os.Args[3]
+
+	// take input from user to a list of args
+	coordinatorOutput, err := c.FetchCoordinatorOutput(context.Background(), &coordinator.CoordinatorInput{Data: clientInputString, Flag: clientInputFlag})
+	if err != nil {
+		log.Fatalf("Error when calling Distributed Log Querier: %s", err)
+	}
+
+	log.Printf("Response from server: %s", coordinatorOutput)
+
+}
diff --git a/src/cmd/coordinator/coordinator_server.go b/src/cmd/coordinator/coordinator_server.go
new file mode 100644
index 0000000000000000000000000000000000000000..768636f5203e74e8db5b9567a3533bb7ae5faa83
--- /dev/null
+++ b/src/cmd/coordinator/coordinator_server.go
@@ -0,0 +1,29 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"net"
+
+	"CS425/cs-425-mp1/src/coordinator"
+
+	"google.golang.org/grpc"
+)
+
+func main() {
+
+	lis, err := net.Listen("tcp", fmt.Sprintf(":%d", 9000))
+	if err != nil {
+		log.Fatalf("failed to listen: %v", err)
+	}
+
+	c := coordinator.Coordinator{}
+
+	grpcServer := grpc.NewServer()
+
+	coordinator.RegisterCoordinatorServiceServer(grpcServer, &c)
+
+	if err := grpcServer.Serve(lis); err != nil {
+		log.Fatalf("failed to serve: %s", err)
+	}
+}
diff --git a/src/cmd/worker/machine.1.log b/src/cmd/worker/machine.1.log
new file mode 100644
index 0000000000000000000000000000000000000000..45b983be36b73c0788dc9cbcb76cbb80fc7bb057
--- /dev/null
+++ b/src/cmd/worker/machine.1.log
@@ -0,0 +1 @@
+hi
diff --git a/src/cmd/worker/worker_server b/src/cmd/worker/worker_server
new file mode 100755
index 0000000000000000000000000000000000000000..eb5398c319b5f01a0edf65812ff372caa2a39a3c
Binary files /dev/null and b/src/cmd/worker/worker_server differ
diff --git a/src/cmd/worker/worker_server.go b/src/cmd/worker/worker_server.go
new file mode 100644
index 0000000000000000000000000000000000000000..df5cde28d6fda7779ccfa3f4d23a7477991e2838
--- /dev/null
+++ b/src/cmd/worker/worker_server.go
@@ -0,0 +1,29 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"net"
+
+	"CS425/cs-425-mp1/src/worker"
+
+	"google.golang.org/grpc"
+)
+
+func main() {
+
+	lis, err := net.Listen("tcp", fmt.Sprintf(":%d", 9001))
+	if err != nil {
+		log.Fatalf("failed to listen: %v", err)
+	}
+
+	w := worker.Worker{}
+
+	grpcServer := grpc.NewServer()
+
+	worker.RegisterWorkerServiceServer(grpcServer, &w)
+
+	if err := grpcServer.Serve(lis); err != nil {
+		log.Fatalf("failed to serve: %s", err)
+	}
+}
diff --git a/src/cmd/worker/worker_server1 b/src/cmd/worker/worker_server1
new file mode 100755
index 0000000000000000000000000000000000000000..6147c211ce99d02c0d4db2ae02ed5f46d344c481
Binary files /dev/null and b/src/cmd/worker/worker_server1 differ