diff --git a/chunk/server.go b/chunk/server.go
index 0566c16..1e7b534 100644
--- a/chunk/server.go
+++ b/chunk/server.go
@@ -108,18 +108,6 @@
 	}
 }
 
-func (s *ChunkServer) StoreChunk(
-	ctx context.Context,
-	req *api.StoreChunkRequest) (resp *api.StoreChunkResponse, err error) {
-	chunk := s.factory.New(len(req.Data))
-	s.chunks.Store(req.ChunkId, chunk)
-	_, err = chunk.WriterAt().WriteAt(req.Data, 0)
-	if err == nil {
-		resp = &api.StoreChunkResponse{}
-	}
-	return
-}
-
 func (s *ChunkServer) RemoveChunk(
 	ctx context.Context,
 	req *api.RemoveChunkRequest) (resp *api.RemoveChunkResponse, err error) {
diff --git a/chunk/server_test.go b/chunk/server_test.go
index 70f209f..2c6fb83 100644
--- a/chunk/server_test.go
+++ b/chunk/server_test.go
@@ -10,8 +10,16 @@
 
 func TestStoreChunk(t *testing.T) {
 	s := ChunkServer{factory: &InMemoryChunkFactory{}}
-	_, err := s.StoreChunk(context.Background(), &api.StoreChunkRequest{
+	_, err := s.CreateChunk(context.Background(), &api.CreateChunkRequest{
 		ChunkId: "foo",
+		Size:    11,
+		Role:    api.ReplicaRole_PRIMARY})
+	if err != nil {
+		t.Error(err)
+	}
+	_, err = s.WriteChunk(context.Background(), &api.WriteChunkRequest{
+		ChunkId: "foo",
+		Offset:  0,
 		Data:    []byte("hello world")})
 	if err != nil {
 		t.Error(err)
@@ -20,8 +28,16 @@
 
 func TestStoreAndReadChunk(t *testing.T) {
 	s := ChunkServer{factory: &InMemoryChunkFactory{}}
-	_, err := s.StoreChunk(context.Background(), &api.StoreChunkRequest{
+	_, err := s.CreateChunk(context.Background(), &api.CreateChunkRequest{
 		ChunkId: "foo",
+		Size:    11,
+		Role:    api.ReplicaRole_PRIMARY})
+	if err != nil {
+		t.Error(err)
+	}
+	_, err = s.WriteChunk(context.Background(), &api.WriteChunkRequest{
+		ChunkId: "foo",
+		Offset:  0,
 		Data:    []byte("hello world")})
 	if err != nil {
 		t.Error(err)
@@ -39,8 +55,16 @@
 
 func TestReadWithOffsets(t *testing.T) {
 	s := ChunkServer{factory: &InMemoryChunkFactory{}}
-	_, err := s.StoreChunk(context.Background(), &api.StoreChunkRequest{
+	_, err := s.CreateChunk(context.Background(), &api.CreateChunkRequest{
 		ChunkId: "foo",
+		Size:    11,
+		Role:    api.ReplicaRole_PRIMARY})
+	if err != nil {
+		t.Error(err)
+	}
+	_, err = s.WriteChunk(context.Background(), &api.WriteChunkRequest{
+		ChunkId: "foo",
+		Offset:  0,
 		Data:    []byte("hello world")})
 	if err != nil {
 		t.Error(err)
