diff --git a/pkg/grpc/server.go b/pkg/grpc/server.go
index 488d470..7796b83 100644
--- a/pkg/grpc/server.go
+++ b/pkg/grpc/server.go
@@ -79,12 +79,14 @@
 	port int,
 	certs *GrpcSecurity,
 	secure bool,
+	probe ReadyProbe,
 ) *GrpcServer {
 	server := &GrpcServer{
 		address:      address,
 		port:         port,
 		secure:       secure,
 		GrpcSecurity: certs,
+		probe:        probe,
 	}
 	return server
 }
@@ -124,12 +126,6 @@
 	}
 }
 
-// Attach a readiness probe to the server.
-// If the probe returns NotReady, the server will return UNAVAILABLE
-func (s *GrpcServer) AttachReadyProbe(p ReadyProbe) {
-	s.probe = p
-}
-
 func withServerUnaryInterceptor(s *GrpcServer) grpc.ServerOption {
 	return grpc.UnaryInterceptor(mkServerInterceptor(s))
 }
diff --git a/pkg/grpc/server_test.go b/pkg/grpc/server_test.go
index a3afc09..df3911c 100644
--- a/pkg/grpc/server_test.go
+++ b/pkg/grpc/server_test.go
@@ -38,12 +38,12 @@
 }
 
 func TestNewGrpcServer(t *testing.T) {
-	server := NewGrpcServer("127.0.0.1", 1234, nil, false)
+	server := NewGrpcServer("127.0.0.1", 1234, nil, false, nil)
 	assert.NotNil(t, server)
 }
 
 func TestMkServerInterceptorNoProbe(t *testing.T) {
-	server := NewGrpcServer("127.0.0.1", 1234, nil, false)
+	server := NewGrpcServer("127.0.0.1", 1234, nil, false, nil)
 	assert.NotNil(t, server)
 
 	f := mkServerInterceptor(server)
@@ -62,7 +62,9 @@
 }
 
 func TestMkServerInterceptorReady(t *testing.T) {
-	server := NewGrpcServer("127.0.0.1", 1234, nil, false)
+	probe := &MockReadyProbe{Ready: true}
+
+	server := NewGrpcServer("127.0.0.1", 1234, nil, false, probe)
 	assert.NotNil(t, server)
 
 	f := mkServerInterceptor(server)
@@ -71,9 +73,6 @@
 	req := "SomeRequest"
 	serverInfo := grpc.UnaryServerInfo{Server: nil, FullMethod: "somemethod"}
 
-	probe := &MockReadyProbe{Ready: true}
-	server.AttachReadyProbe(probe)
-
 	result, err := f(context.Background(),
 		req,
 		&serverInfo,
@@ -84,7 +83,9 @@
 }
 
 func TestMkServerInterceptorNotReady(t *testing.T) {
-	server := NewGrpcServer("127.0.0.1", 1234, nil, false)
+	probe := &MockReadyProbe{Ready: false}
+
+	server := NewGrpcServer("127.0.0.1", 1234, nil, false, probe)
 	assert.NotNil(t, server)
 
 	f := mkServerInterceptor(server)
@@ -93,9 +94,6 @@
 	req := "SomeRequest"
 	serverInfo := grpc.UnaryServerInfo{Server: nil, FullMethod: "somemethod"}
 
-	probe := &MockReadyProbe{Ready: false}
-	server.AttachReadyProbe(probe)
-
 	result, err := f(context.Background(),
 		req,
 		&serverInfo,
