diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index 1b466f7..66361d5 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -174,12 +174,13 @@
     generate_java_struct_writer(out, tstruct);
   }
   scope_down(out);
+  out << endl;
 }
 
 void t_java_generator::generate_java_struct_reader(ofstream& out,
                                                    t_struct* tstruct) {
   out <<
-    indent() << "public static " << tstruct->get_name() << " read(TProtocol _iprot, TTransport _itrans) throws TException {" << endl;
+    indent() << "public void read(TProtocol _iprot, TTransport _itrans) throws TException {" << endl;
   indent_up();
 
   const vector<t_field*>& fields = tstruct->get_members();
@@ -187,7 +188,6 @@
 
   // Declare stack tmp variables
   out <<
-    indent() << tstruct->get_name() << " _value = new " << tstruct->get_name() << "();" << endl <<
     indent() << "TField _field;" << endl <<
     indent() << "TStruct _struct = _iprot.readStructBegin(_itrans);" << endl;
   
@@ -222,9 +222,9 @@
         indent(out) <<
           "case " << (*f_iter)->get_key() << ":" << endl;
         indent_up();
-        generate_deserialize_field(out, *f_iter, "_value.");
+        generate_deserialize_field(out, *f_iter, "this.");
         out <<
-          indent() << "_value.__isset." << (*f_iter)->get_name() << " = true;" << endl;
+          indent() << "this.__isset." << (*f_iter)->get_name() << " = true;" << endl;
         indent(out) <<
           "break;" << endl;
         indent_down();
@@ -245,8 +245,7 @@
     scope_down(out);
       
     out <<
-      indent() << "_iprot.readStructEnd(_itrans);" << endl <<
-      indent() << "return _value;" << endl; 
+      indent() << "_iprot.readStructEnd(_itrans);" << endl;
 
   indent_down();
   out <<
@@ -290,8 +289,7 @@
 
   indent_down();
   out <<
-    indent() << "}" << endl <<
-    endl;
+    indent() << "}" << endl;
 }
 
 void t_java_generator::generate_java_struct_result_writer(ofstream& out,
@@ -545,7 +543,8 @@
 
       f_service_ <<
         indent() << "TMessage _msg = _iprot.readMessageBegin(_itrans);" << endl <<
-        indent() << resultname << " __result = " << resultname << ".read(_iprot, _itrans);" << endl <<
+        indent() << resultname << " __result = new " << resultname << "();" << endl <<
+        indent() << "__result.read(_iprot, _itrans);" << endl <<
         indent() << "_iprot.readMessageEnd(_itrans);" << endl <<
         endl;
 
@@ -722,7 +721,8 @@
   string resultname = tfunction->get_name() + "_result";
 
   f_service_ <<
-    indent() << argsname << " __args = " << argsname << ".read(_iprot, _itrans);" << endl <<
+    indent() << argsname << " __args = new " << argsname << "();" << endl <<
+    indent() << "__args.read(_iprot, _itrans);" << endl <<
     indent() << "_iprot.readMessageEnd(_itrans);" << endl;
 
   t_struct* xs = tfunction->get_xceptions();
@@ -890,7 +890,8 @@
                                                    t_struct* tstruct,
                                                    string prefix) {
   out <<
-    indent() << prefix << " = " << tstruct->get_name() << ".read(_iprot, _itrans);" << endl;
+    indent() << prefix << " = new " << tstruct->get_name() << "();" << endl <<
+    indent() << prefix << ".read(_iprot, _itrans);" << endl;
 }
 
 void t_java_generator::generate_deserialize_container(ofstream& out,
@@ -1292,10 +1293,12 @@
         break;
     }
 
-    } else  if (ttype->is_enum()) {
+    } else if (ttype->is_enum()) {
       result += " = 0";
+    } else if (ttype->is_container()) {
+      result += " = new " + type_name(ttype) + "()";
     } else {
-      result += " = new " + type_name(tfield->get_type()) + "()";
+      result += " = null";
     }
   }
   return result + ";";
diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc
index 6f4b76a..74b73b9 100644
--- a/compiler/cpp/src/generate/t_php_generator.cc
+++ b/compiler/cpp/src/generate/t_php_generator.cc
@@ -118,8 +118,6 @@
 void t_php_generator::generate_php_struct(t_struct* tstruct,
                                           bool is_exception) {
   generate_php_struct_definition(f_types_, tstruct, is_exception);
-  generate_php_struct_reader(f_types_, tstruct);
-  generate_php_struct_writer(f_types_, tstruct);
 }
 
 /**
@@ -153,8 +151,12 @@
       "public $" << (*m_iter)->get_name() << " = null;" << endl;
   }
  
-  indent_down();
+  out << endl;
 
+  generate_php_struct_reader(out, tstruct);
+  generate_php_struct_writer(out, tstruct);
+
+  indent_down();
   out <<
     indent() << "}" << endl <<
     endl;
@@ -166,8 +168,7 @@
   vector<t_field*>::const_iterator f_iter;
 
   indent(out) <<
-    "function read_struct_" << tstruct->get_name() <<
-    "($iprot, $itrans, &$value) " << endl;
+    "public function read($iprot, $itrans) " << endl;
   scope_up(out);
 
   out <<
@@ -223,7 +224,7 @@
         indent(out) <<
           "case " << (*f_iter)->get_key() << ":" << endl;
         indent_up();
-        generate_deserialize_field(out, *f_iter, "value->");
+        generate_deserialize_field(out, *f_iter, "this->");
         indent(out) <<
           "break;" << endl;
         indent_down();
@@ -267,12 +268,10 @@
 
   if (binary_inline_) {
     indent(out) <<
-      "function write_struct_" << name <<
-      "(&$_output, &$value) {" << endl;
+      "public function write(&$_output) {" << endl;
   } else {
     indent(out) <<
-      "function write_struct_" << name <<
-      "($oprot, $otrans, &$value) {" << endl;
+      "public function write($oprot, $otrans) {" << endl;
   }
   indent_up();
   
@@ -299,7 +298,7 @@
     }
 
     // Write field contents
-    generate_serialize_field(out, *f_iter, "value->");
+    generate_serialize_field(out, *f_iter, "this->");
 
     // Write field closer
     if (!binary_inline_) {
@@ -370,8 +369,6 @@
   for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
     t_struct* ts = (*f_iter)->get_arglist();
     generate_php_struct_definition(f_service_, ts, false);
-    generate_php_struct_reader(f_service_, ts);
-    generate_php_struct_writer(f_service_, ts);
     generate_php_function_helpers(*f_iter);
   }
 }
@@ -396,7 +393,6 @@
   }
 
   generate_php_struct_definition(f_service_, &result, false);
-  generate_php_struct_reader(f_service_, &result);
 }
 
 /**
@@ -543,11 +539,11 @@
       // Write to the stream
       if (binary_inline_) { 
         f_service_ <<
-          indent() << "write_struct_" << argsname << "($_output, $__args);" << endl <<
+          indent() << "$__args->write($_output, $__args);" << endl <<
           indent() << "$this->_otrans->write($_output);" << endl;
       } else {
         f_service_ <<
-          indent() << "write_struct_" << argsname << "($this->_oprot, $this->_otrans, $__args);" << endl <<
+          indent() << "$__args->write($this->_oprot, $this->_otrans);" << endl <<
           indent() << "$this->_oprot->writeMessageEnd($this->_otrans);" << endl;
       }
       
@@ -594,7 +590,7 @@
 
       f_service_ <<
         indent() << "$__result = new " << resultname << "();" << endl <<
-        indent() << "read_struct_" << resultname << "($this->_iprot, $this->_otrans, $__result);" << endl;
+        indent() << "$__result->read($this->_iprot, $this->_otrans);" << endl;
 
       if (!binary_inline_) {
         f_service_ <<
@@ -794,7 +790,7 @@
                                                   string prefix) {
   out <<
     indent() << "$" << prefix << " = new " << tstruct->get_name() << "();" << endl <<
-    indent() << "$xfer += read_struct_" << tstruct->get_name() << "($iprot, $itrans, $" << prefix << ");" << endl;
+    indent() << "$xfer += $" << prefix << "->read($iprot, $itrans);" << endl;
 }
 
 void t_php_generator::generate_deserialize_container(ofstream &out,
@@ -1067,10 +1063,10 @@
                                                 string prefix) {
   if (binary_inline_) {
     indent(out) <<
-      "$xfer += write_struct_" << tstruct->get_name() << "($_output, $" << prefix << ");" << endl;
+      "$xfer += $" << prefix << "->write($_output);" << endl;
   } else {
     indent(out) <<
-      "$xfer += write_struct_" << tstruct->get_name() << "($oprot, $otrans, $" << prefix << ");" << endl;
+      "$xfer += $" << prefix << "->write($oprot, $otrans);" << endl;
   }
 }
 
@@ -1363,7 +1359,7 @@
     }
   } else if (type->is_enum()) {
     return "TType::I32";
-  } else if (type->is_struct()) {
+  } else if (type->is_struct() || type->is_xception()) {
     return "TType::STRUCT";
   } else if (type->is_map()) {
     return "TType::MAP";
