diff --git a/packages/grpc-es/package.json b/packages/grpc-es/package.json
index d2eec01..571988f 100644
--- a/packages/grpc-es/package.json
+++ b/packages/grpc-es/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@kanziw/grpc-es",
-  "version": "0.2.0",
+  "version": "0.2.1",
   "description": "A collection of grpc libraries using connect-es",
   "repository": {
     "type": "git",
diff --git a/packages/grpc-es/src/server/index.ts b/packages/grpc-es/src/server/index.ts
index e2c41c4..176cc8b 100644
--- a/packages/grpc-es/src/server/index.ts
+++ b/packages/grpc-es/src/server/index.ts
@@ -1,3 +1,4 @@
 export { stdoutUnaryServerInterceptor } from './interceptor.js'
 export { GrpcEsServer } from './server.js'
 export type { Handler, Interceptor } from './types.js'
+export { Code, GrpcError } from './status.js'
diff --git a/packages/grpc-es/src/server/server.ts b/packages/grpc-es/src/server/server.ts
index 927783c..fc170ab 100644
--- a/packages/grpc-es/src/server/server.ts
+++ b/packages/grpc-es/src/server/server.ts
@@ -3,6 +3,7 @@ import type { AnyMessage, ServiceType } from '@bufbuild/protobuf'
 import type { HandlerContext, ServiceImpl } from '@connectrpc/connect'
 import { connectNodeAdapter } from '@connectrpc/connect-node'
 import { UniversalHandlerOptions } from '@connectrpc/connect/protocol'
+import { Code, GrpcError } from './status.js'
 import type { Handler, Interceptor } from './types.js'
 
 export class GrpcEsServer {
@@ -16,8 +17,9 @@ export class GrpcEsServer {
     return this
   }
 
-  register<Service extends ServiceType>(service: Service, implementation: ServiceImpl<Service>): this {
-    const interceptorAppliedImplementation = {} as ServiceImpl<typeof service>
+  register<Service extends ServiceType>(service: Service, partialImplementation: Partial<ServiceImpl<Service>>): this {
+    const implementation = { ...makeUnimplementedService(service), ...partialImplementation } as ServiceImpl<Service>
+    const interceptorAppliedImplementation = {} as ServiceImpl<Service>
 
     for (const [key, handler] of Object.entries(implementation)) {
       let appliedHandler = handler
@@ -47,3 +49,16 @@ export class GrpcEsServer {
       .listen(port)
   }
 }
+
+function makeUnimplementedService<Service extends ServiceType>(service: Service): ServiceImpl<Service> {
+  return Object.keys(service.methods).reduce(
+    (us, method) => {
+      // @ts-ignore
+      us[method] = () => {
+        throw new GrpcError(`Unimplemented method: [${method}]`, Code.Unimplemented)
+      }
+      return us
+    },
+    {} as ServiceImpl<Service>,
+  )
+}
diff --git a/packages/grpc-es/src/server/status.ts b/packages/grpc-es/src/server/status.ts
new file mode 100644
index 0000000..39fe55b
--- /dev/null
+++ b/packages/grpc-es/src/server/status.ts
@@ -0,0 +1,3 @@
+import { Code, ConnectError as GrpcError } from '@connectrpc/connect'
+
+export { Code, GrpcError }