diff --git a/src/csharp/Grpc.Core/ClientBase.cs b/src/csharp/Grpc.Core/ClientBase.cs
index 265e6c5c07bd33e59d42da1f2ae9adb253799554..b21d01c5e2957e061efda0a4b00cb821e417e01b 100644
--- a/src/csharp/Grpc.Core/ClientBase.cs
+++ b/src/csharp/Grpc.Core/ClientBase.cs
@@ -34,6 +34,7 @@
 using System;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
+using Grpc.Core.Internal;
 using Grpc.Core.Utils;
 
 namespace Grpc.Core
diff --git a/src/csharp/Grpc.Core/Grpc.Core.csproj b/src/csharp/Grpc.Core/Grpc.Core.csproj
index 7d950bd97876e738d1f290b8de1395dc89d77e9d..251a6889464cb6e81b9e2854bc899de02fb3b393 100644
--- a/src/csharp/Grpc.Core/Grpc.Core.csproj
+++ b/src/csharp/Grpc.Core/Grpc.Core.csproj
@@ -131,8 +131,8 @@
     <Compile Include="Utils\GrpcPreconditions.cs" />
     <Compile Include="CallInvoker.cs" />
     <Compile Include="DefaultCallInvoker.cs" />
-    <Compile Include="InterceptingCallInvoker.cs" />
-    <Compile Include="UnimplementedCallInvoker.cs" />
+    <Compile Include="Internal\UnimplementedCallInvoker.cs" />
+    <Compile Include="Internal\InterceptingCallInvoker.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="Grpc.Core.nuspec" />
diff --git a/src/csharp/Grpc.Core/InterceptingCallInvoker.cs b/src/csharp/Grpc.Core/Internal/InterceptingCallInvoker.cs
similarity index 99%
rename from src/csharp/Grpc.Core/InterceptingCallInvoker.cs
rename to src/csharp/Grpc.Core/Internal/InterceptingCallInvoker.cs
index 6b64540f2d203b219f18e035fd1935abebc1a4d2..1b8c54a6da27565e4058eb0bc76c3c9e13aff8d9 100644
--- a/src/csharp/Grpc.Core/InterceptingCallInvoker.cs
+++ b/src/csharp/Grpc.Core/Internal/InterceptingCallInvoker.cs
@@ -33,10 +33,10 @@
 
 using System;
 using System.Threading.Tasks;
-using Grpc.Core.Internal;
+using Grpc.Core;
 using Grpc.Core.Utils;
 
-namespace Grpc.Core
+namespace Grpc.Core.Internal
 {
     /// <summary>
     /// Decorates an underlying <c>CallInvoker</c> to intercept call invocations.
diff --git a/src/csharp/Grpc.Core/UnimplementedCallInvoker.cs b/src/csharp/Grpc.Core/Internal/UnimplementedCallInvoker.cs
similarity index 98%
rename from src/csharp/Grpc.Core/UnimplementedCallInvoker.cs
rename to src/csharp/Grpc.Core/Internal/UnimplementedCallInvoker.cs
index 7f046cbca94c087cb1da5b043cee2421e19bd40d..c8f2a1ee7eb138f4feaaef67570cac254b9ee978 100644
--- a/src/csharp/Grpc.Core/UnimplementedCallInvoker.cs
+++ b/src/csharp/Grpc.Core/Internal/UnimplementedCallInvoker.cs
@@ -33,10 +33,10 @@
 
 using System;
 using System.Threading.Tasks;
-using Grpc.Core.Internal;
+using Grpc.Core;
 using Grpc.Core.Utils;
 
-namespace Grpc.Core
+namespace Grpc.Core.Internal
 {
     /// <summary>
     /// Call invoker that throws <c>NotImplementedException</c> for all requests.