diff --git a/src/php/lib/Grpc/BaseStub.php b/src/php/lib/Grpc/BaseStub.php
index e745ec3709f69825da63ebabf115eb90351d9558..ff293c0709cab873a28d8dbb0a046efe904d4e03 100755
--- a/src/php/lib/Grpc/BaseStub.php
+++ b/src/php/lib/Grpc/BaseStub.php
@@ -33,10 +33,10 @@ class BaseStub {
    * @param array $metadata A metadata map to send to the server
    * @return SimpleSurfaceActiveCall The active call object
    */
-  protected function _simpleRequest($method,
-                                    $argument,
-                                    callable $deserialize,
-                                    $metadata = array()) {
+  public function _simpleRequest($method,
+                                 $argument,
+                                 callable $deserialize,
+                                 $metadata = array()) {
     return new SimpleSurfaceActiveCall($this->channel,
                                        $method,
                                        $deserialize,
@@ -55,10 +55,10 @@ class BaseStub {
    * @param array $metadata A metadata map to send to the server
    * @return ClientStreamingSurfaceActiveCall The active call object
    */
-  protected function _clientStreamRequest($method,
-                                          $arguments,
-                                          callable $deserialize,
-                                          $metadata = array()) {
+  public function _clientStreamRequest($method,
+                                       $arguments,
+                                       callable $deserialize,
+                                       $metadata = array()) {
     return new ClientStreamingSurfaceActiveCall($this->channel,
                                                 $method,
                                                 $deserialize,
@@ -76,10 +76,10 @@ class BaseStub {
    * @param array $metadata A metadata map to send to the server
    * @return ServerStreamingSurfaceActiveCall The active call object
    */
-  protected function _serverStreamRequest($method,
-                                          $argument,
-                                          callable $deserialize,
-                                          $metadata = array()) {
+  public function _serverStreamRequest($method,
+                                       $argument,
+                                       callable $deserialize,
+                                       $metadata = array()) {
     return new ServerStreamingSurfaceActiveCall($this->channel,
                                                 $method,
                                                 $deserialize,
@@ -95,9 +95,9 @@ class BaseStub {
    * @param array $metadata A metadata map to send to the server
    * @return BidiStreamingSurfaceActiveCall The active call object
    */
-  protected function _bidiRequest($method,
-                                  callable $deserialize,
-                                  $metadata = array()) {
+  public function _bidiRequest($method,
+                               callable $deserialize,
+                               $metadata = array()) {
     return new BidiStreamingSurfaceActiveCall($this->channel,
                                               $method,
                                               $deserialize,
diff --git a/src/php/tests/interop/empty.php b/src/php/tests/interop/empty.php
index 3e4968fcc3e0f7bc69c1c166304fdc0468387b62..22b11803b675153daf83b616c7d67be8f13e539d 100755
--- a/src/php/tests/interop/empty.php
+++ b/src/php/tests/interop/empty.php
@@ -1,7 +1,7 @@
 <?php
 // DO NOT EDIT! Generated by Protobuf-PHP protoc plugin 1.0
 // Source: test/cpp/interop/empty.proto
-//   Date: 2015-01-30 21:44:54
+//   Date: 2015-01-30 23:30:46
 
 namespace grpc\testing {
 
diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php
index c83750635bf0ded1a64fe046daf41c280b3fdfcf..2ff2be7bca0e535b9e6a36fa87c803eabbd44a14 100755
--- a/src/php/tests/interop/interop_client.php
+++ b/src/php/tests/interop/interop_client.php
@@ -161,11 +161,12 @@ $server_address = $args['server_host'] . ':' . $args['server_port'];
 $credentials = Grpc\Credentials::createSsl(
     file_get_contents(dirname(__FILE__) . '/../data/ca.pem'));
 $stub = new grpc\testing\TestServiceClient(
-    $server_address,
-    [
-        'grpc.ssl_target_name_override' => 'foo.test.google.com',
-        'credentials' => $credentials
-     ]);
+    new Grpc\BaseStub(
+        $server_address,
+        [
+            'grpc.ssl_target_name_override' => 'foo.test.google.com',
+            'credentials' => $credentials
+         ]));
 
 echo "Connecting to $server_address\n";
 echo "Running test case $args[test_case]\n";
diff --git a/src/php/tests/interop/messages.php b/src/php/tests/interop/messages.php
index bbdd296452ecc43d9770d46825807b3d07b0a8db..129c96fa136792ce7ea232553d27f0cad0ae0035 100755
--- a/src/php/tests/interop/messages.php
+++ b/src/php/tests/interop/messages.php
@@ -1,7 +1,7 @@
 <?php
 // DO NOT EDIT! Generated by Protobuf-PHP protoc plugin 1.0
 // Source: test/cpp/interop/messages.proto
-//   Date: 2015-01-30 21:44:54
+//   Date: 2015-01-30 23:30:46
 
 namespace grpc\testing {
 
diff --git a/src/php/tests/interop/test.php b/src/php/tests/interop/test.php
index 060a21def6d7e108582842e26d898f4b8a38f1ac..014bbc9517aa97e0b8cdb80a1bd305f9d3d610e3 100755
--- a/src/php/tests/interop/test.php
+++ b/src/php/tests/interop/test.php
@@ -1,52 +1,52 @@
 <?php
 // DO NOT EDIT! Generated by Protobuf-PHP protoc plugin 1.0
 // Source: test/cpp/interop/test.proto
-//   Date: 2015-01-30 21:44:54
+//   Date: 2015-01-30 23:30:46
 
 namespace grpc\testing {
 
-  class TestServiceClient extends \Grpc\BaseStub {
+  class TestServiceClient{
+
+    private $rpc_impl;
+
+    public function __construct($rpc_impl) {
+      $this->rpc_impl = $rpc_impl;
+    }
     /**
      * @param grpc\testing\EmptyMessage $input
-     * @return grpc\testing\EmptyMessage
      */
     public function EmptyCall(\grpc\testing\EmptyMessage $argument, $metadata = array()) {
-      return $this->_simpleRequest('/grpc.testing.TestService/EmptyCall', $argument, '\grpc\testing\EmptyMessage::deserialize', $metadata);
+      return $this->rpc_impl->_simpleRequest('/grpc.testing.TestService/EmptyCall', $argument, '\grpc\testing\EmptyMessage::deserialize', $metadata);
     }
     /**
      * @param grpc\testing\SimpleRequest $input
-     * @return grpc\testing\SimpleResponse
      */
     public function UnaryCall(\grpc\testing\SimpleRequest $argument, $metadata = array()) {
-      return $this->_simpleRequest('/grpc.testing.TestService/UnaryCall', $argument, '\grpc\testing\SimpleResponse::deserialize', $metadata);
+      return $this->rpc_impl->_simpleRequest('/grpc.testing.TestService/UnaryCall', $argument, '\grpc\testing\SimpleResponse::deserialize', $metadata);
     }
     /**
      * @param grpc\testing\StreamingOutputCallRequest $input
-     * @return grpc\testing\StreamingOutputCallResponse
      */
     public function StreamingOutputCall($argument, $metadata = array()) {
-      return $this->_serverStreamRequest('/grpc.testing.TestService/StreamingOutputCall', $argument, '\grpc\testing\StreamingOutputCallResponse::deserialize', $metadata);
+      return $this->rpc_impl->_serverStreamRequest('/grpc.testing.TestService/StreamingOutputCall', $argument, '\grpc\testing\StreamingOutputCallResponse::deserialize', $metadata);
     }
     /**
      * @param grpc\testing\StreamingInputCallRequest $input
-     * @return grpc\testing\StreamingInputCallResponse
      */
     public function StreamingInputCall($arguments, $metadata = array()) {
-      return $this->_clientStreamRequest('/grpc.testing.TestService/StreamingInputCall', $arguments, '\grpc\testing\StreamingInputCallResponse::deserialize', $metadata);
+      return $this->rpc_impl->_clientStreamRequest('/grpc.testing.TestService/StreamingInputCall', $arguments, '\grpc\testing\StreamingInputCallResponse::deserialize', $metadata);
     }
     /**
      * @param grpc\testing\StreamingOutputCallRequest $input
-     * @return grpc\testing\StreamingOutputCallResponse
      */
     public function FullDuplexCall($metadata = array()) {
-      return $this->_bidiRequest('/grpc.testing.TestService/FullDuplexCall', '\grpc\testing\StreamingOutputCallResponse::deserialize', $metadata);
+      return $this->rpc_impl->_bidiRequest('/grpc.testing.TestService/FullDuplexCall', '\grpc\testing\StreamingOutputCallResponse::deserialize', $metadata);
     }
     /**
      * @param grpc\testing\StreamingOutputCallRequest $input
-     * @return grpc\testing\StreamingOutputCallResponse
      */
     public function HalfDuplexCall($metadata = array()) {
-      return $this->_bidiRequest('/grpc.testing.TestService/HalfDuplexCall', '\grpc\testing\StreamingOutputCallResponse::deserialize', $metadata);
+      return $this->rpc_impl->_bidiRequest('/grpc.testing.TestService/HalfDuplexCall', '\grpc\testing\StreamingOutputCallResponse::deserialize', $metadata);
     }
   }
 }