diff --git a/compiler/cpp/src/generate/t_st_generator.cc b/compiler/cpp/src/generate/t_st_generator.cc
index 0ac02d4..62a3e5b 100644
--- a/compiler/cpp/src/generate/t_st_generator.cc
+++ b/compiler/cpp/src/generate/t_st_generator.cc
@@ -74,10 +74,14 @@
 
 void t_st_generator::close_generator() {
   generate_force_consts();
-
   f_.close();
 }
 
+string t_st_generator::generated_category() {
+  string cat = program_->get_smalltalk_category();
+  return cat.size() ? cat : "Generated-" + class_name();
+}
+
 /**
  * Generates a typedef. This is not done in Smalltalk, types are all implicit.
  *
@@ -91,7 +95,7 @@
   out << indent() << "instanceVariableNames: ''" << endl <<
     indent() << "classVariableNames: ''" << endl <<
     indent() << "poolDictionaries: ''" << endl <<
-    indent() << "category: 'Thrift-Generated-" << class_name() << "'!" << endl << endl;
+    indent() << "category: '" << generated_category() << "'!" << endl << endl;
 }
 
 void t_st_generator::st_method(std::ofstream &out, string cls, string name) {
@@ -346,7 +350,7 @@
   out << "'\n" <<
     "\tclassVariableNames: ''\n" <<
     "\tpoolDictionaries: ''\n" <<
-    "\tcategory: 'Thrift-Generated-" << class_name() << "'!\n\n";
+    "\tcategory: '" << generated_category() << "'!\n\n";
 
   generate_accessors(out, tstruct);
 }
@@ -378,8 +382,10 @@
 
   if (members.size() > 0) {
     for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
-			st_accessors(out, capitalize(type_name(tstruct)), sanitize((*m_iter)->get_name()),
-									 a_type((*m_iter)->get_type()));
+      st_accessors(out,
+                   capitalize(type_name(tstruct)),
+                   sanitize((*m_iter)->get_name()),
+                   a_type((*m_iter)->get_type()));
     }
     out << endl;
   }
@@ -547,14 +553,14 @@
   indent_up();
 
   for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
-		bool optional = (*fld_iter)->get_req() == t_field::OPTIONAL;
+    bool optional = (*fld_iter)->get_req() == t_field::OPTIONAL;
     string fname = (*fld_iter)->get_name();
-		string accessor = sname + " " + sanitize(fname);
+    string accessor = sname + " " + sanitize(fname);
 
-		if (optional) {
-			out << indent() << accessor << " ifNotNil: [" << endl;
-			indent_up();
-		}
+    if (optional) {
+      out << indent() << accessor << " ifNotNil: [" << endl;
+      indent_up();
+    }
 
     out << indent() << "oprot writeFieldBegin: (TField new name: '" << fname <<
       "'; type: " << type_to_enum((*fld_iter)->get_type()) <<
@@ -563,15 +569,15 @@
     out << indent() << write_val((*fld_iter)->get_type(), accessor) << "." << endl <<
       indent() << "oprot writeFieldEnd";
 
-		if(optional) {
-			out << "]";
-			indent_down();
-		}
+    if (optional) {
+      out << "]";
+      indent_down();
+    }
 
-		out << "." << endl;
+    out << "." << endl;
   }
 
-	out << indent() << "oprot writeFieldStop; writeStructEnd] value";
+  out << indent() << "oprot writeFieldStop; writeStructEnd] value";
   indent_down();
 
   return out.str();
@@ -585,8 +591,9 @@
   string desc = temp_name();
   string found = temp_name();
 
-  if(clsName.size() == 0)
+  if (clsName.size() == 0) {
     clsName = tstruct->get_name();
+  }
 
   out << "[|" << desc << " " << val << "|" << endl;
   indent_up();
@@ -606,48 +613,48 @@
 
     out << indent() << found << " := true." << endl <<
       indent() << val << " " << sanitize((*fld_iter)->get_name()) << ": " <<
-        read_val((*fld_iter)->get_type());
+      read_val((*fld_iter)->get_type());
     indent_down();
 
-		out << "]." << endl;
+    out << "]." << endl;
   }
 
   out << indent() << found << " ifNil: [iprot skip: " << desc << " type]]." << endl;
   indent_down();
 
   out << indent() << "oprot readStructEnd." << endl <<
-		indent() << val << "] value";
+    indent() << val << "] value";
   indent_down();
 
   return out.str();
 }
 
 string t_st_generator::write_val(t_type *t, string fname) {
-	t = get_true_type(t);
+  t = get_true_type(t);
 
-  if(t->is_base_type()) {
-	  t_base_type::t_base tbase = ((t_base_type*) t)->get_base();
-		switch(tbase) {
-	    case t_base_type::TYPE_DOUBLE:
-				return "iprot writeDouble: " + fname + " asFloat";
-				break;
-			case t_base_type::TYPE_BYTE:
-	    case t_base_type::TYPE_I16:
-	    case t_base_type::TYPE_I32:
-	    case t_base_type::TYPE_I64:
-				return "iprot write" + capitalize(type_name(t)) + ": " + fname + " asInteger";
-			default:
-				return "iprot write" + capitalize(type_name(t)) + ": " + fname;
-		}
-  } else if(t->is_map()) {
+  if (t->is_base_type()) {
+    t_base_type::t_base tbase = ((t_base_type*) t)->get_base();
+    switch(tbase) {
+    case t_base_type::TYPE_DOUBLE:
+      return "iprot writeDouble: " + fname + " asFloat";
+      break;
+    case t_base_type::TYPE_BYTE:
+    case t_base_type::TYPE_I16:
+    case t_base_type::TYPE_I32:
+    case t_base_type::TYPE_I64:
+      return "iprot write" + capitalize(type_name(t)) + ": " + fname + " asInteger";
+    default:
+      return "iprot write" + capitalize(type_name(t)) + ": " + fname;
+    }
+  } else if (t->is_map()) {
     return map_writer((t_map*) t, fname);
-  } else if(t->is_struct() || t->is_xception()) {
+  } else if (t->is_struct() || t->is_xception()) {
     return struct_writer((t_struct*) t, fname);
-  } else if(t->is_list()) {
+  } else if (t->is_list()) {
     return list_writer((t_list*) t, fname);
-  } else if(t->is_set()) {
+  } else if (t->is_set()) {
     return set_writer((t_set*) t, fname);
-  } else if(t->is_enum()) {
+  } else if (t->is_enum()) {
     return "iprot writeI32: " + fname;
   } else {
     throw "Sorry, I don't know how to write this: " + type_name(t);
@@ -655,19 +662,19 @@
 }
 
 string t_st_generator::read_val(t_type *t) {
-	t = get_true_type(t);
+  t = get_true_type(t);
 
-  if(t->is_base_type()) {
+  if (t->is_base_type()) {
     return "iprot read" + capitalize(type_name(t));
-  } else if(t->is_map()) {
+  } else if (t->is_map()) {
     return map_reader((t_map*) t);
-  } else if(t->is_struct() || t->is_xception()) {
+  } else if (t->is_struct() || t->is_xception()) {
     return struct_reader((t_struct*) t);
-  } else if(t->is_list()) {
+  } else if (t->is_list()) {
     return list_reader((t_list*) t);
-  } else if(t->is_set()) {
+  } else if (t->is_set()) {
     return set_reader((t_set*) t);
-  } else if(t->is_enum()) {
+  } else if (t->is_enum()) {
     return "iprot readI32";
   } else {
     throw "Sorry, I don't know how to read this: " + type_name(t);
@@ -744,21 +751,22 @@
 }
 
 string t_st_generator::function_types_comment(t_function* fn) {
-	std::ostringstream out;
+  std::ostringstream out;
   const vector<t_field*>& fields = fn->get_arglist()->get_members();
   vector<t_field*>::const_iterator f_iter;
 
-	out << "\"";
+  out << "\"";
 
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
-		out << (*f_iter)->get_name() << ": " << type_name((*f_iter)->get_type());
-		if((f_iter + 1) != fields.end())
-			out << ", ";
-	}
+    out << (*f_iter)->get_name() << ": " << type_name((*f_iter)->get_type());
+    if ((f_iter + 1) != fields.end()) {
+      out << ", ";
+    }
+  }
 
-	out << "\"";
+  out << "\"";
 
-	return out.str();
+  return out.str();
 }
 
 /**
@@ -781,44 +789,47 @@
     "\tinstanceVariableNames: ''\n" <<
     "\tclassVariableNames: ''\n" <<
     "\tpoolDictionaries: ''\n" <<
-    "\tcategory: 'ThriftGenerated-" << class_name() << "'!\n\n";
+    "\tcategory: '" << generated_category() << "'!\n\n";
 
   for (f_iter = functions.begin(); f_iter != functions.end(); ++f_iter) {
     string funname = (*f_iter)->get_name();
     string signature = function_signature(*f_iter);
 
     st_method(f_, client_class_name(), signature);
-		f_ << function_types_comment(*f_iter) << endl <<
-   		indent() << "self send" << capitalize(signature) << "." << endl;
+    f_ << function_types_comment(*f_iter) << endl <<
+      indent() << "self send" << capitalize(signature) << "." << endl;
 
-    if(!(*f_iter)->is_async())
+    if (!(*f_iter)->is_async()) {
       f_ << indent() << "^ self recv" << capitalize(funname) << " success " << endl;
+    }
 
     st_close_method(f_);
 
     generate_send_method(*f_iter);
-    if(!(*f_iter)->is_async()) generate_recv_method(*f_iter);
+    if (!(*f_iter)->is_async()) {
+      generate_recv_method(*f_iter);
+    }
   }
 }
 
 string t_st_generator::sanitize(string s) {
-	std::ostringstream out;
-	bool underscore = false;
+  std::ostringstream out;
+  bool underscore = false;
 
-	for(unsigned int i = 0; i < s.size(); i++) {
-		if(s[i] == '_') {
-			underscore = true;
-			continue;
-		}
-		if(underscore) {
-			out << (char) toupper(s[i]);
-			underscore = false;
-			continue;
-		}
-		out << s[i];
-	}
+  for (unsigned int i = 0; i < s.size(); i++) {
+    if (s[i] == '_') {
+      underscore = true;
+      continue;
+    }
+    if (underscore) {
+      out << (char) toupper(s[i]);
+      underscore = false;
+      continue;
+    }
+    out << s[i];
+  }
 
-	return out.str();
+  return out.str();
 }
 
 /**
@@ -878,7 +889,7 @@
     case t_base_type::TYPE_VOID:
       throw "NO T_VOID CONSTRUCT";
     case t_base_type::TYPE_STRING:
-        return "TType string";
+      return "TType string";
     case t_base_type::TYPE_BOOL:
       return "TType bool";
     case t_base_type::TYPE_BYTE:
diff --git a/compiler/cpp/src/generate/t_st_generator.h b/compiler/cpp/src/generate/t_st_generator.h
index 141555f..6491cbd 100644
--- a/compiler/cpp/src/generate/t_st_generator.h
+++ b/compiler/cpp/src/generate/t_st_generator.h
@@ -111,6 +111,7 @@
 	std::string a_type(t_type* type);
   bool is_vowel(char c);
   std::string temp_name();
+  std::string generated_category();
 
  private:
 
diff --git a/compiler/cpp/src/parse/t_program.h b/compiler/cpp/src/parse/t_program.h
index 224c9d5..ddc121c 100644
--- a/compiler/cpp/src/parse/t_program.h
+++ b/compiler/cpp/src/parse/t_program.h
@@ -192,6 +192,14 @@
     return cocoa_prefix_;
   }
 
+  void set_smalltalk_category(std::string smalltalk_category) {
+    smalltalk_category_ = smalltalk_category;
+  }
+
+  const std::string& get_smalltalk_category() const {
+    return smalltalk_category_;
+  }
+
  private:
 
   // File path
@@ -247,6 +255,8 @@
   // Cocoa/Objective-C naming prefix
   std::string cocoa_prefix_;
 
+  // Smalltalk category
+  std::string smalltalk_category_;
 
 };
 
diff --git a/compiler/cpp/src/thriftl.ll b/compiler/cpp/src/thriftl.ll
index baaef5c..d371658 100644
--- a/compiler/cpp/src/thriftl.ll
+++ b/compiler/cpp/src/thriftl.ll
@@ -41,139 +41,141 @@
  * Helper definitions, comments, constants, and whatnot
  */
 
-intconstant  ([+-]?[0-9]+)
-hexconstant  ("0x"[0-9A-Fa-f]+)
-dubconstant  ([+-]?[0-9]*(\.[0-9]+)?([eE][+-]?[0-9]+)?)
-identifier   ([a-zA-Z_][\.a-zA-Z_0-9]*)
-whitespace   ([ \t\r\n]*)
-sillycomm    ("/*""*"*"*/")
-multicomm    ("/*"[^*]"/"*([^*/]|[^*]"/"|"*"[^/])*"*"*"*/")
-doctext      ("/**"([^*/]|[^*]"/"|"*"[^/])*"*"*"*/")
-comment      ("//"[^\n]*)
-unixcomment  ("#"[^\n]*)
-symbol       ([:;\,\{\}\(\)\=<>\[\]])
-dliteral     ("\""[^"]*"\"")
-sliteral     ("'"[^']*"'")
+intconstant   ([+-]?[0-9]+)
+hexconstant   ("0x"[0-9A-Fa-f]+)
+dubconstant   ([+-]?[0-9]*(\.[0-9]+)?([eE][+-]?[0-9]+)?)
+identifier    ([a-zA-Z_][\.a-zA-Z_0-9]*)
+whitespace    ([ \t\r\n]*)
+sillycomm     ("/*""*"*"*/")
+multicomm     ("/*"[^*]"/"*([^*/]|[^*]"/"|"*"[^/])*"*"*"*/")
+doctext       ("/**"([^*/]|[^*]"/"|"*"[^/])*"*"*"*/")
+comment       ("//"[^\n]*)
+unixcomment   ("#"[^\n]*)
+symbol        ([:;\,\{\}\(\)\=<>\[\]])
+dliteral      ("\""[^"]*"\"")
+sliteral      ("'"[^']*"'")
+st_identifier ([a-zA-Z-][\.a-zA-Z_0-9-]*)
 
 
 %%
 
-{whitespace}  { /* do nothing */ }
-{sillycomm}   { /* do nothing */ }
-{multicomm}   { /* do nothing */ }
-{comment}     { /* do nothing */ }
-{unixcomment} { /* do nothing */ }
+{whitespace}         { /* do nothing */                 }
+{sillycomm}          { /* do nothing */                 }
+{multicomm}          { /* do nothing */                 }
+{comment}            { /* do nothing */                 }
+{unixcomment}        { /* do nothing */                 }
 
-{symbol}      { return yytext[0]; }
+{symbol}             { return yytext[0];                }
 
-"namespace"      { return tok_namespace;      }
-"cpp_namespace"  { return tok_cpp_namespace;  }
-"cpp_include"    { return tok_cpp_include;    }
-"cpp_type"       { return tok_cpp_type;       }
-"java_package"   { return tok_java_package;   }
-"cocoa_prefix"   { return tok_cocoa_prefix;   }
-"php_namespace"  { return tok_php_namespace;  }
-"py_module"      { return tok_py_module;      }
-"perl_package"   { return tok_perl_package;   }
-"ruby_namespace" { return tok_ruby_namespace; }
-"xsd_all"        { return tok_xsd_all;        }
-"xsd_optional"   { return tok_xsd_optional;   }
-"xsd_nillable"   { return tok_xsd_nillable;   }
-"xsd_namespace"  { return tok_xsd_namespace;  }
-"xsd_attrs"      { return tok_xsd_attrs;      }
-"include"        { return tok_include;        }
+"namespace"          { return tok_namespace;            }
+"cpp_namespace"      { return tok_cpp_namespace;        }
+"cpp_include"        { return tok_cpp_include;          }
+"cpp_type"           { return tok_cpp_type;             }
+"java_package"       { return tok_java_package;         }
+"cocoa_prefix"       { return tok_cocoa_prefix;         }
+"php_namespace"      { return tok_php_namespace;        }
+"py_module"          { return tok_py_module;            }
+"perl_package"       { return tok_perl_package;         }
+"ruby_namespace"     { return tok_ruby_namespace;       }
+"smalltalk_category" { return tok_smalltalk_category;   }
+"xsd_all"            { return tok_xsd_all;              }
+"xsd_optional"       { return tok_xsd_optional;         }
+"xsd_nillable"       { return tok_xsd_nillable;         }
+"xsd_namespace"      { return tok_xsd_namespace;        }
+"xsd_attrs"          { return tok_xsd_attrs;            }
+"include"            { return tok_include;              }
+"void"               { return tok_void;                 }
+"bool"               { return tok_bool;                 }
+"byte"               { return tok_byte;                 }
+"i16"                { return tok_i16;                  }
+"i32"                { return tok_i32;                  }
+"i64"                { return tok_i64;                  }
+"double"             { return tok_double;               }
+"string"             { return tok_string;               }
+"binary"             { return tok_binary;               }
+"slist"              { return tok_slist;                }
+"senum"              { return tok_senum;                }
+"map"                { return tok_map;                  }
+"list"               { return tok_list;                 }
+"set"                { return tok_set;                  }
+"async"              { return tok_async;                }
+"typedef"            { return tok_typedef;              }
+"struct"             { return tok_struct;               }
+"exception"          { return tok_xception;             }
+"extends"            { return tok_extends;              }
+"throws"             { return tok_throws;               }
+"service"            { return tok_service;              }
+"enum"               { return tok_enum;                 }
+"const"              { return tok_const;                }
+"required"           { return tok_required;             }
+"optional"           { return tok_optional;             }
 
-"void"           { return tok_void;           }
-"bool"           { return tok_bool;           }
-"byte"           { return tok_byte;           }
-"i16"            { return tok_i16;            }
-"i32"            { return tok_i32;            }
-"i64"            { return tok_i64;            }
-"double"         { return tok_double;         }
-"string"         { return tok_string;         }
-"binary"         { return tok_binary;         }
-"slist"          { return tok_slist;          }
-"senum"          { return tok_senum;          }
-"map"            { return tok_map;            }
-"list"           { return tok_list;           }
-"set"            { return tok_set;            }
-"async"          { return tok_async;          }
-"typedef"        { return tok_typedef;        }
-"struct"         { return tok_struct;         }
-"exception"      { return tok_xception;       }
-"extends"        { return tok_extends;        }
-"throws"         { return tok_throws;         }
-"service"        { return tok_service;        }
-"enum"           { return tok_enum;           }
-"const"          { return tok_const;          }
-"required"       { return tok_required;       }
-"optional"       { return tok_optional;       }
 
-"abstract" { thrift_reserved_keyword(yytext); }
-"and" { thrift_reserved_keyword(yytext); }
-"as" { thrift_reserved_keyword(yytext); }
-"assert" { thrift_reserved_keyword(yytext); }
-"break" { thrift_reserved_keyword(yytext); }
-"case" { thrift_reserved_keyword(yytext); }
-"class" { thrift_reserved_keyword(yytext); }
-"continue" { thrift_reserved_keyword(yytext); }
-"declare" { thrift_reserved_keyword(yytext); }
-"def" { thrift_reserved_keyword(yytext); }
-"default" { thrift_reserved_keyword(yytext); }
-"del" { thrift_reserved_keyword(yytext); }
-"delete" { thrift_reserved_keyword(yytext); }
-"do" { thrift_reserved_keyword(yytext); }
-"elif" { thrift_reserved_keyword(yytext); }
-"else" { thrift_reserved_keyword(yytext); }
-"elseif" { thrift_reserved_keyword(yytext); }
-"except" { thrift_reserved_keyword(yytext); }
-"exec" { thrift_reserved_keyword(yytext); }
-"false" { thrift_reserved_keyword(yytext); }
-"final" { thrift_reserved_keyword(yytext); }
-"finally" { thrift_reserved_keyword(yytext); }
-"float" { thrift_reserved_keyword(yytext); }
-"for" { thrift_reserved_keyword(yytext); }
-"foreach" { thrift_reserved_keyword(yytext); }
-"function" { thrift_reserved_keyword(yytext); }
-"global" { thrift_reserved_keyword(yytext); }
-"goto" { thrift_reserved_keyword(yytext); }
-"if" { thrift_reserved_keyword(yytext); }
-"implements" { thrift_reserved_keyword(yytext); }
-"import" { thrift_reserved_keyword(yytext); }
-"in" { thrift_reserved_keyword(yytext); }
-"inline" { thrift_reserved_keyword(yytext); }
-"instanceof" { thrift_reserved_keyword(yytext); }
-"interface" { thrift_reserved_keyword(yytext); }
-"is" { thrift_reserved_keyword(yytext); }
-"lambda" { thrift_reserved_keyword(yytext); }
-"native" { thrift_reserved_keyword(yytext); }
-"new" { thrift_reserved_keyword(yytext); }
-"not" { thrift_reserved_keyword(yytext); }
-"or" { thrift_reserved_keyword(yytext); }
-"pass" { thrift_reserved_keyword(yytext); }
-"public" { thrift_reserved_keyword(yytext); }
-"print" { thrift_reserved_keyword(yytext); }
-"private" { thrift_reserved_keyword(yytext); }
-"protected" { thrift_reserved_keyword(yytext); }
-"raise" { thrift_reserved_keyword(yytext); }
-"return" { thrift_reserved_keyword(yytext); }
-"sizeof" { thrift_reserved_keyword(yytext); }
-"static" { thrift_reserved_keyword(yytext); }
-"switch" { thrift_reserved_keyword(yytext); }
-"synchronized" { thrift_reserved_keyword(yytext); }
-"this" { thrift_reserved_keyword(yytext); }
-"throw" { thrift_reserved_keyword(yytext); }
-"transient" { thrift_reserved_keyword(yytext); }
-"true" { thrift_reserved_keyword(yytext); }
-"try" { thrift_reserved_keyword(yytext); }
-"unsigned" { thrift_reserved_keyword(yytext); }
-"var" { thrift_reserved_keyword(yytext); }
-"virtual" { thrift_reserved_keyword(yytext); }
-"volatile" { thrift_reserved_keyword(yytext); }
-"while" { thrift_reserved_keyword(yytext); }
-"with" { thrift_reserved_keyword(yytext); }
-"union" { thrift_reserved_keyword(yytext); }
-"yield" { thrift_reserved_keyword(yytext); }
+"abstract"           { thrift_reserved_keyword(yytext); }
+"and"                { thrift_reserved_keyword(yytext); }
+"as"                 { thrift_reserved_keyword(yytext); }
+"assert"             { thrift_reserved_keyword(yytext); }
+"break"              { thrift_reserved_keyword(yytext); }
+"case"               { thrift_reserved_keyword(yytext); }
+"class"              { thrift_reserved_keyword(yytext); }
+"continue"           { thrift_reserved_keyword(yytext); }
+"declare"            { thrift_reserved_keyword(yytext); }
+"def"                { thrift_reserved_keyword(yytext); }
+"default"            { thrift_reserved_keyword(yytext); }
+"del"                { thrift_reserved_keyword(yytext); }
+"delete"             { thrift_reserved_keyword(yytext); }
+"do"                 { thrift_reserved_keyword(yytext); }
+"elif"               { thrift_reserved_keyword(yytext); }
+"else"               { thrift_reserved_keyword(yytext); }
+"elseif"             { thrift_reserved_keyword(yytext); }
+"except"             { thrift_reserved_keyword(yytext); }
+"exec"               { thrift_reserved_keyword(yytext); }
+"false"              { thrift_reserved_keyword(yytext); }
+"final"              { thrift_reserved_keyword(yytext); }
+"finally"            { thrift_reserved_keyword(yytext); }
+"float"              { thrift_reserved_keyword(yytext); }
+"for"                { thrift_reserved_keyword(yytext); }
+"foreach"            { thrift_reserved_keyword(yytext); }
+"function"           { thrift_reserved_keyword(yytext); }
+"global"             { thrift_reserved_keyword(yytext); }
+"goto"               { thrift_reserved_keyword(yytext); }
+"if"                 { thrift_reserved_keyword(yytext); }
+"implements"         { thrift_reserved_keyword(yytext); }
+"import"             { thrift_reserved_keyword(yytext); }
+"in"                 { thrift_reserved_keyword(yytext); }
+"inline"             { thrift_reserved_keyword(yytext); }
+"instanceof"         { thrift_reserved_keyword(yytext); }
+"interface"          { thrift_reserved_keyword(yytext); }
+"is"                 { thrift_reserved_keyword(yytext); }
+"lambda"             { thrift_reserved_keyword(yytext); }
+"native"             { thrift_reserved_keyword(yytext); }
+"new"                { thrift_reserved_keyword(yytext); }
+"not"                { thrift_reserved_keyword(yytext); }
+"or"                 { thrift_reserved_keyword(yytext); }
+"pass"               { thrift_reserved_keyword(yytext); }
+"public"             { thrift_reserved_keyword(yytext); }
+"print"              { thrift_reserved_keyword(yytext); }
+"private"            { thrift_reserved_keyword(yytext); }
+"protected"          { thrift_reserved_keyword(yytext); }
+"raise"              { thrift_reserved_keyword(yytext); }
+"return"             { thrift_reserved_keyword(yytext); }
+"sizeof"             { thrift_reserved_keyword(yytext); }
+"static"             { thrift_reserved_keyword(yytext); }
+"switch"             { thrift_reserved_keyword(yytext); }
+"synchronized"       { thrift_reserved_keyword(yytext); }
+"this"               { thrift_reserved_keyword(yytext); }
+"throw"              { thrift_reserved_keyword(yytext); }
+"transient"          { thrift_reserved_keyword(yytext); }
+"true"               { thrift_reserved_keyword(yytext); }
+"try"                { thrift_reserved_keyword(yytext); }
+"unsigned"           { thrift_reserved_keyword(yytext); }
+"var"                { thrift_reserved_keyword(yytext); }
+"virtual"            { thrift_reserved_keyword(yytext); }
+"volatile"           { thrift_reserved_keyword(yytext); }
+"while"              { thrift_reserved_keyword(yytext); }
+"with"               { thrift_reserved_keyword(yytext); }
+"union"              { thrift_reserved_keyword(yytext); }
+"yield"              { thrift_reserved_keyword(yytext); }
 
 {intconstant} {
   yylval.iconst = atoi(yytext);
@@ -195,6 +197,11 @@
   return tok_identifier;
 }
 
+{st_identifier} {
+  yylval.id = strdup(yytext);
+  return tok_st_identifier;
+}
+
 {dliteral} {
   yylval.id = strdup(yytext+1);
   yylval.id[strlen(yylval.id)-1] = '\0';
diff --git a/compiler/cpp/src/thrifty.yy b/compiler/cpp/src/thrifty.yy
index cd727c1..5d7cfcc 100644
--- a/compiler/cpp/src/thrifty.yy
+++ b/compiler/cpp/src/thrifty.yy
@@ -60,6 +60,7 @@
 %token<id>     tok_identifier
 %token<id>     tok_literal
 %token<dtext>  tok_doctext
+%token<id>     tok_st_identifier
 
 /**
  * Constant values
@@ -85,6 +86,7 @@
 %token tok_xsd_namespace
 %token tok_xsd_attrs
 %token tok_ruby_namespace
+%token tok_smalltalk_category
 %token tok_cocoa_prefix
 
 /**
@@ -211,7 +213,7 @@
 CaptureDocText:
     {
       if (g_parse_mode == PROGRAM) {
-        $$ = g_doctext; 
+        $$ = g_doctext;
         g_doctext = NULL;
       } else {
         $$ = NULL;
@@ -293,6 +295,13 @@
         g_program->set_ruby_namespace($2);
       }
     }
+| tok_smalltalk_category tok_st_identifier
+    {
+      pdebug("Header -> tok_smalltalk_category tok_st_identifier");
+      if (g_parse_mode == PROGRAM) {
+        g_program->set_smalltalk_category($2);
+      }
+    }
 | tok_java_package tok_identifier
     {
       pdebug("Header -> tok_java_package tok_identifier");
@@ -346,7 +355,7 @@
       pdebug("Definition -> Const");
       if (g_parse_mode == PROGRAM) {
         g_program->add_const($1);
-      }    
+      }
       $$ = $1;
     }
 | TypeDefinition
@@ -411,7 +420,7 @@
     }
 
 Typedef:
-  tok_typedef DefinitionType tok_identifier 
+  tok_typedef DefinitionType tok_identifier
     {
       pdebug("TypeDef -> tok_typedef DefinitionType tok_identifier");
       t_typedef *td = new t_typedef(g_program, $2, $3);
diff --git a/lib/st/README b/lib/st/README
index 14c72db..7ceb7ff 100644
--- a/lib/st/README
+++ b/lib/st/README
@@ -1,11 +1,11 @@
 Author: Patrick Collison <patrick@collison.ie>
 Last updated Nov 2007
 
-To get started, just file in thrift.st with Squeak, and run something like:
+To get started, just file in thrift.st with Squeak, run thrift -st
+on the tutorial .thrift files (and file in the resulting code), and
+then:
 
-sock := TSocket new host: 'localhost'; port: 9090; open.
-prot := TBinaryProtocol new transport: sock.
-calc := CalculatorClient new inProtocol: prot.
+calc := CalculatorClient binaryOnHost: 'localhost' port: '9090'
 calc addNum1: 10 num2: 15
 
-Tested in Squeak 3.7, but should work fine with anything later.
\ No newline at end of file
+Tested in Squeak 3.7, but should work fine with anything later.
diff --git a/lib/st/thrift.st b/lib/st/thrift.st
index c24f616..445534c 100644
--- a/lib/st/thrift.st
+++ b/lib/st/thrift.st
@@ -1,6 +1,5 @@
 SystemOrganization addCategory: #Thrift!
 SystemOrganization addCategory: #'Thrift-Protocol'!
-SystemOrganization addCategory: #'Thrift-Test'!
 SystemOrganization addCategory: #'Thrift-Transport'!
 
 Error subclass: #TError
@@ -59,149 +58,19 @@
 	poolDictionaries: ''
 	category: 'Thrift-Transport'!
 
-Error subclass: #Xception
-	instanceVariableNames: 'errorCode message'
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-!Xception methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-errorCode
-    ^ errorCode! !
-
-!Xception methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-errorCode: anI32
-    errorCode := anI32! !
-
-!Xception methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-message
-    ^ message! !
-
-!Xception methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-message: aString
-    message := aString! !
-
-Error subclass: #Xception2
-	instanceVariableNames: 'errorCode structThing'
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-!Xception2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-errorCode
-    ^ errorCode! !
-
-!Xception2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-errorCode: anI32
-    errorCode := anI32! !
-
-!Xception2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-structThing
-    ^ structThing! !
-
-!Xception2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-structThing: aXtruct
-    structThing := aXtruct! !
-
-Object subclass: #Bonk
-	instanceVariableNames: 'message type'
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-!Bonk methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-message
-    ^ message! !
-
-!Bonk methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-message: aString
-    message := aString! !
-
-!Bonk methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-type
-    ^ type! !
-
-!Bonk methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-type: anI32
-    type := anI32! !
-
-Object subclass: #EmptyStruct
-	instanceVariableNames: ''
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-Object subclass: #Insanity
-	instanceVariableNames: 'userMap xtructs'
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-!Insanity methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-userMap
-    ^ userMap! !
-
-!Insanity methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-userMap: a
-    userMap := a! !
-
-!Insanity methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-xtructs
-    ^ xtructs! !
-
-!Insanity methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-xtructs: a
-    xtructs := a! !
-
 Object subclass: #TClient
 	instanceVariableNames: 'iprot oprot seqid remoteSeqid'
 	classVariableNames: ''
 	poolDictionaries: ''
 	category: 'Thrift'!
 
-TClient subclass: #SecondServiceClient
-	instanceVariableNames: ''
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-!SecondServiceClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-blahBlah
-    ""
-    self sendBlahBlah.
-    ^ self recvBlahBlah success 
-! !
-
-!SecondServiceClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvBlahBlah
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp118 temp117|
-      temp117 := TResult new.
-      iprot readStructBegin.
-      [temp118 := iprot readFieldBegin.
-      temp118 type = TType stop] whileFalse: [|temp119|
-        temp118 id = 0 ifTrue: [
-          temp119 := true.
-          temp117 success: iprot readVoid].
-        temp119 ifNil: [iprot skip: temp118 type]].
-      oprot readStructEnd.
-      temp117] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!SecondServiceClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendBlahBlah
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'blahBlah'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'BlahBlah_args').
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
+!TClient class methodsFor: 'as yet unclassified' stamp: 'pc 11/7/2007 06:00'!
+binaryOnHost: aString port: anInteger
+	| sock |
+	sock := TSocket new host: aString; port: anInteger; open; yourself.
+	^ self new
+		inProtocol: (TBinaryProtocol new transport: sock);
+		yourself! !
 
 !TClient methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 23:03'!
 inProtocol: aProtocol
@@ -222,1134 +91,12 @@
 validateRemoteMessage: aMsg
 	remoteSeqid
 		ifNil: [remoteSeqid := aMsg seqid]
-		ifNotNil: 
+		ifNotNil:
 			[(remoteSeqid + 1) = aMsg seqid ifFalse:
 				[TProtocolError signal: 'Bad seqid: ', aMsg seqid asString,
 							'; wanted: ', remoteSeqid asString].
 			remoteSeqid := aMsg seqid]! !
 
-TClient subclass: #ThriftTestClient
-	instanceVariableNames: ''
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestByte
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp7 temp6|
-      temp6 := TResult new.
-      iprot readStructBegin.
-      [temp7 := iprot readFieldBegin.
-      temp7 type = TType stop] whileFalse: [|temp8|
-        temp7 id = 0 ifTrue: [
-          temp8 := true.
-          temp6 success: iprot readByte].
-        temp8 ifNil: [iprot skip: temp7 type]].
-      oprot readStructEnd.
-      temp6] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestDouble
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp19 temp18|
-      temp18 := TResult new.
-      iprot readStructBegin.
-      [temp19 := iprot readFieldBegin.
-      temp19 type = TType stop] whileFalse: [|temp20|
-        temp19 id = 0 ifTrue: [
-          temp20 := true.
-          temp18 success: iprot readDouble].
-        temp20 ifNil: [iprot skip: temp19 type]].
-      oprot readStructEnd.
-      temp18] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestEnum
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp56 temp55|
-      temp55 := TResult new.
-      iprot readStructBegin.
-      [temp56 := iprot readFieldBegin.
-      temp56 type = TType stop] whileFalse: [|temp57|
-        temp56 id = 0 ifTrue: [
-          temp57 := true.
-          temp55 success: iprot readI32].
-        temp57 ifNil: [iprot skip: temp56 type]].
-      oprot readStructEnd.
-      temp55] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestException
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp97 temp96|
-      temp96 := TResult new.
-      iprot readStructBegin.
-      [temp97 := iprot readFieldBegin.
-      temp97 type = TType stop] whileFalse: [|temp98|
-        temp97 id = 0 ifTrue: [
-          temp98 := true.
-          temp96 success: iprot readVoid].
-        temp97 id = -2 ifTrue: [
-          temp98 := true.
-          temp96 exception: [|temp100 temp99|
-            temp99 := Xception new.
-            iprot readStructBegin.
-            [temp100 := iprot readFieldBegin.
-            temp100 type = TType stop] whileFalse: [|temp101|
-              temp100 id = 1 ifTrue: [
-                temp101 := true.
-                temp99 errorCode: iprot readI32].
-              temp100 id = 2 ifTrue: [
-                temp101 := true.
-                temp99 message: iprot readString].
-              temp101 ifNil: [iprot skip: temp100 type]].
-            oprot readStructEnd.
-            temp99] value].
-        temp98 ifNil: [iprot skip: temp97 type]].
-      oprot readStructEnd.
-      temp96] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestI16
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp10 temp9|
-      temp9 := TResult new.
-      iprot readStructBegin.
-      [temp10 := iprot readFieldBegin.
-      temp10 type = TType stop] whileFalse: [|temp11|
-        temp10 id = 0 ifTrue: [
-          temp11 := true.
-          temp9 success: iprot readI16].
-        temp11 ifNil: [iprot skip: temp10 type]].
-      oprot readStructEnd.
-      temp9] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestI32
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp13 temp12|
-      temp12 := TResult new.
-      iprot readStructBegin.
-      [temp13 := iprot readFieldBegin.
-      temp13 type = TType stop] whileFalse: [|temp14|
-        temp13 id = 0 ifTrue: [
-          temp14 := true.
-          temp12 success: iprot readI32].
-        temp14 ifNil: [iprot skip: temp13 type]].
-      oprot readStructEnd.
-      temp12] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestI64
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp16 temp15|
-      temp15 := TResult new.
-      iprot readStructBegin.
-      [temp16 := iprot readFieldBegin.
-      temp16 type = TType stop] whileFalse: [|temp17|
-        temp16 id = 0 ifTrue: [
-          temp17 := true.
-          temp15 success: iprot readI64].
-        temp17 ifNil: [iprot skip: temp16 type]].
-      oprot readStructEnd.
-      temp15] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestInsanity
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp72 temp71|
-      temp71 := TResult new.
-      iprot readStructBegin.
-      [temp72 := iprot readFieldBegin.
-      temp72 type = TType stop] whileFalse: [|temp73|
-        temp72 id = 0 ifTrue: [
-          temp73 := true.
-          temp71 success: [|temp74 temp75| 
-            temp74 := iprot readMapBegin.
-            temp75 := Dictionary new.
-            temp74 size timesRepeat: [
-              temp75 at: iprot readI64 put: [|temp76 temp77| 
-                temp76 := iprot readMapBegin.
-                temp77 := Dictionary new.
-                temp76 size timesRepeat: [
-                  temp77 at: iprot readI32 put: [|temp79 temp78|
-                    temp78 := Insanity new.
-                    iprot readStructBegin.
-                    [temp79 := iprot readFieldBegin.
-                    temp79 type = TType stop] whileFalse: [|temp80|
-                      temp79 id = 1 ifTrue: [
-                        temp80 := true.
-                        temp78 userMap: [|temp81 temp82| 
-                          temp81 := iprot readMapBegin.
-                          temp82 := Dictionary new.
-                          temp81 size timesRepeat: [
-                            temp82 at: iprot readI32 put: iprot readI64].
-                          iprot readMapEnd.
-                          temp82] value].
-                      temp79 id = 2 ifTrue: [
-                        temp80 := true.
-                        temp78 xtructs: [|temp83 temp84| temp83 := iprot readListBegin.
-                          temp84 := OrderedCollection new.
-                          temp83 size timesRepeat: [
-                            temp84 add: [|temp86 temp85|
-                              temp85 := Xtruct new.
-                              iprot readStructBegin.
-                              [temp86 := iprot readFieldBegin.
-                              temp86 type = TType stop] whileFalse: [|temp87|
-                                temp86 id = 1 ifTrue: [
-                                  temp87 := true.
-                                  temp85 stringThing: iprot readString].
-                                temp86 id = 4 ifTrue: [
-                                  temp87 := true.
-                                  temp85 byteThing: iprot readByte].
-                                temp86 id = 9 ifTrue: [
-                                  temp87 := true.
-                                  temp85 i32Thing: iprot readI32].
-                                temp86 id = 11 ifTrue: [
-                                  temp87 := true.
-                                  temp85 i64Thing: iprot readI64].
-                                temp87 ifNil: [iprot skip: temp86 type]].
-                              oprot readStructEnd.
-                              temp85] value].
-                          iprot readListEnd.
-                          temp84] value].
-                      temp80 ifNil: [iprot skip: temp79 type]].
-                    oprot readStructEnd.
-                    temp78] value].
-                iprot readMapEnd.
-                temp77] value].
-            iprot readMapEnd.
-            temp75] value].
-        temp73 ifNil: [iprot skip: temp72 type]].
-      oprot readStructEnd.
-      temp71] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestList
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp51 temp50|
-      temp50 := TResult new.
-      iprot readStructBegin.
-      [temp51 := iprot readFieldBegin.
-      temp51 type = TType stop] whileFalse: [|temp52|
-        temp51 id = 0 ifTrue: [
-          temp52 := true.
-          temp50 success: [|temp53 temp54| temp53 := iprot readListBegin.
-            temp54 := OrderedCollection new.
-            temp53 size timesRepeat: [
-              temp54 add: iprot readI32].
-            iprot readListEnd.
-            temp54] value].
-        temp52 ifNil: [iprot skip: temp51 type]].
-      oprot readStructEnd.
-      temp50] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestMap
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp39 temp38|
-      temp38 := TResult new.
-      iprot readStructBegin.
-      [temp39 := iprot readFieldBegin.
-      temp39 type = TType stop] whileFalse: [|temp40|
-        temp39 id = 0 ifTrue: [
-          temp40 := true.
-          temp38 success: [|temp41 temp42| 
-            temp41 := iprot readMapBegin.
-            temp42 := Dictionary new.
-            temp41 size timesRepeat: [
-              temp42 at: iprot readI32 put: iprot readI32].
-            iprot readMapEnd.
-            temp42] value].
-        temp40 ifNil: [iprot skip: temp39 type]].
-      oprot readStructEnd.
-      temp38] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestMapMap
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp62 temp61|
-      temp61 := TResult new.
-      iprot readStructBegin.
-      [temp62 := iprot readFieldBegin.
-      temp62 type = TType stop] whileFalse: [|temp63|
-        temp62 id = 0 ifTrue: [
-          temp63 := true.
-          temp61 success: [|temp64 temp65| 
-            temp64 := iprot readMapBegin.
-            temp65 := Dictionary new.
-            temp64 size timesRepeat: [
-              temp65 at: iprot readI32 put: [|temp66 temp67| 
-                temp66 := iprot readMapBegin.
-                temp67 := Dictionary new.
-                temp66 size timesRepeat: [
-                  temp67 at: iprot readI32 put: iprot readI32].
-                iprot readMapEnd.
-                temp67] value].
-            iprot readMapEnd.
-            temp65] value].
-        temp63 ifNil: [iprot skip: temp62 type]].
-      oprot readStructEnd.
-      temp61] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestMulti
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp91 temp90|
-      temp90 := TResult new.
-      iprot readStructBegin.
-      [temp91 := iprot readFieldBegin.
-      temp91 type = TType stop] whileFalse: [|temp92|
-        temp91 id = 0 ifTrue: [
-          temp92 := true.
-          temp90 success: [|temp94 temp93|
-            temp93 := Xtruct new.
-            iprot readStructBegin.
-            [temp94 := iprot readFieldBegin.
-            temp94 type = TType stop] whileFalse: [|temp95|
-              temp94 id = 1 ifTrue: [
-                temp95 := true.
-                temp93 stringThing: iprot readString].
-              temp94 id = 4 ifTrue: [
-                temp95 := true.
-                temp93 byteThing: iprot readByte].
-              temp94 id = 9 ifTrue: [
-                temp95 := true.
-                temp93 i32Thing: iprot readI32].
-              temp94 id = 11 ifTrue: [
-                temp95 := true.
-                temp93 i64Thing: iprot readI64].
-              temp95 ifNil: [iprot skip: temp94 type]].
-            oprot readStructEnd.
-            temp93] value].
-        temp92 ifNil: [iprot skip: temp91 type]].
-      oprot readStructEnd.
-      temp90] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestMultiException
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp103 temp102|
-      temp102 := TResult new.
-      iprot readStructBegin.
-      [temp103 := iprot readFieldBegin.
-      temp103 type = TType stop] whileFalse: [|temp104|
-        temp103 id = 0 ifTrue: [
-          temp104 := true.
-          temp102 success: [|temp106 temp105|
-            temp105 := Xtruct new.
-            iprot readStructBegin.
-            [temp106 := iprot readFieldBegin.
-            temp106 type = TType stop] whileFalse: [|temp107|
-              temp106 id = 1 ifTrue: [
-                temp107 := true.
-                temp105 stringThing: iprot readString].
-              temp106 id = 4 ifTrue: [
-                temp107 := true.
-                temp105 byteThing: iprot readByte].
-              temp106 id = 9 ifTrue: [
-                temp107 := true.
-                temp105 i32Thing: iprot readI32].
-              temp106 id = 11 ifTrue: [
-                temp107 := true.
-                temp105 i64Thing: iprot readI64].
-              temp107 ifNil: [iprot skip: temp106 type]].
-            oprot readStructEnd.
-            temp105] value].
-        temp103 id = -3 ifTrue: [
-          temp104 := true.
-          temp102 exception: [|temp109 temp108|
-            temp108 := Xception new.
-            iprot readStructBegin.
-            [temp109 := iprot readFieldBegin.
-            temp109 type = TType stop] whileFalse: [|temp110|
-              temp109 id = 1 ifTrue: [
-                temp110 := true.
-                temp108 errorCode: iprot readI32].
-              temp109 id = 2 ifTrue: [
-                temp110 := true.
-                temp108 message: iprot readString].
-              temp110 ifNil: [iprot skip: temp109 type]].
-            oprot readStructEnd.
-            temp108] value].
-        temp103 id = -4 ifTrue: [
-          temp104 := true.
-          temp102 exception: [|temp112 temp111|
-            temp111 := Xception2 new.
-            iprot readStructBegin.
-            [temp112 := iprot readFieldBegin.
-            temp112 type = TType stop] whileFalse: [|temp113|
-              temp112 id = 1 ifTrue: [
-                temp113 := true.
-                temp111 errorCode: iprot readI32].
-              temp112 id = 2 ifTrue: [
-                temp113 := true.
-                temp111 structThing: [|temp115 temp114|
-                  temp114 := Xtruct new.
-                  iprot readStructBegin.
-                  [temp115 := iprot readFieldBegin.
-                  temp115 type = TType stop] whileFalse: [|temp116|
-                    temp115 id = 1 ifTrue: [
-                      temp116 := true.
-                      temp114 stringThing: iprot readString].
-                    temp115 id = 4 ifTrue: [
-                      temp116 := true.
-                      temp114 byteThing: iprot readByte].
-                    temp115 id = 9 ifTrue: [
-                      temp116 := true.
-                      temp114 i32Thing: iprot readI32].
-                    temp115 id = 11 ifTrue: [
-                      temp116 := true.
-                      temp114 i64Thing: iprot readI64].
-                    temp116 ifNil: [iprot skip: temp115 type]].
-                  oprot readStructEnd.
-                  temp114] value].
-              temp113 ifNil: [iprot skip: temp112 type]].
-            oprot readStructEnd.
-            temp111] value].
-        temp104 ifNil: [iprot skip: temp103 type]].
-      oprot readStructEnd.
-      temp102] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestNest
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp28 temp27|
-      temp27 := TResult new.
-      iprot readStructBegin.
-      [temp28 := iprot readFieldBegin.
-      temp28 type = TType stop] whileFalse: [|temp29|
-        temp28 id = 0 ifTrue: [
-          temp29 := true.
-          temp27 success: [|temp31 temp30|
-            temp30 := Xtruct2 new.
-            iprot readStructBegin.
-            [temp31 := iprot readFieldBegin.
-            temp31 type = TType stop] whileFalse: [|temp32|
-              temp31 id = 1 ifTrue: [
-                temp32 := true.
-                temp30 byteThing: iprot readByte].
-              temp31 id = 2 ifTrue: [
-                temp32 := true.
-                temp30 structThing: [|temp34 temp33|
-                  temp33 := Xtruct new.
-                  iprot readStructBegin.
-                  [temp34 := iprot readFieldBegin.
-                  temp34 type = TType stop] whileFalse: [|temp35|
-                    temp34 id = 1 ifTrue: [
-                      temp35 := true.
-                      temp33 stringThing: iprot readString].
-                    temp34 id = 4 ifTrue: [
-                      temp35 := true.
-                      temp33 byteThing: iprot readByte].
-                    temp34 id = 9 ifTrue: [
-                      temp35 := true.
-                      temp33 i32Thing: iprot readI32].
-                    temp34 id = 11 ifTrue: [
-                      temp35 := true.
-                      temp33 i64Thing: iprot readI64].
-                    temp35 ifNil: [iprot skip: temp34 type]].
-                  oprot readStructEnd.
-                  temp33] value].
-              temp31 id = 3 ifTrue: [
-                temp32 := true.
-                temp30 i32Thing: iprot readI32].
-              temp32 ifNil: [iprot skip: temp31 type]].
-            oprot readStructEnd.
-            temp30] value].
-        temp29 ifNil: [iprot skip: temp28 type]].
-      oprot readStructEnd.
-      temp27] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestSet
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp45 temp44|
-      temp44 := TResult new.
-      iprot readStructBegin.
-      [temp45 := iprot readFieldBegin.
-      temp45 type = TType stop] whileFalse: [|temp46|
-        temp45 id = 0 ifTrue: [
-          temp46 := true.
-          temp44 success: [|temp47 temp48| temp47 := iprot readSetBegin.
-            temp48 := Set new.
-            temp47 size timesRepeat: [
-              temp48 add: iprot readI32].
-            iprot readSetEnd.
-            temp48] value].
-        temp46 ifNil: [iprot skip: temp45 type]].
-      oprot readStructEnd.
-      temp44] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestString
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp4 temp3|
-      temp3 := TResult new.
-      iprot readStructBegin.
-      [temp4 := iprot readFieldBegin.
-      temp4 type = TType stop] whileFalse: [|temp5|
-        temp4 id = 0 ifTrue: [
-          temp5 := true.
-          temp3 success: iprot readString].
-        temp5 ifNil: [iprot skip: temp4 type]].
-      oprot readStructEnd.
-      temp3] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestStruct
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp22 temp21|
-      temp21 := TResult new.
-      iprot readStructBegin.
-      [temp22 := iprot readFieldBegin.
-      temp22 type = TType stop] whileFalse: [|temp23|
-        temp22 id = 0 ifTrue: [
-          temp23 := true.
-          temp21 success: [|temp25 temp24|
-            temp24 := Xtruct new.
-            iprot readStructBegin.
-            [temp25 := iprot readFieldBegin.
-            temp25 type = TType stop] whileFalse: [|temp26|
-              temp25 id = 1 ifTrue: [
-                temp26 := true.
-                temp24 stringThing: iprot readString].
-              temp25 id = 4 ifTrue: [
-                temp26 := true.
-                temp24 byteThing: iprot readByte].
-              temp25 id = 9 ifTrue: [
-                temp26 := true.
-                temp24 i32Thing: iprot readI32].
-              temp25 id = 11 ifTrue: [
-                temp26 := true.
-                temp24 i64Thing: iprot readI64].
-              temp26 ifNil: [iprot skip: temp25 type]].
-            oprot readStructEnd.
-            temp24] value].
-        temp23 ifNil: [iprot skip: temp22 type]].
-      oprot readStructEnd.
-      temp21] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestTypedef
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp59 temp58|
-      temp58 := TResult new.
-      iprot readStructBegin.
-      [temp59 := iprot readFieldBegin.
-      temp59 type = TType stop] whileFalse: [|temp60|
-        temp59 id = 0 ifTrue: [
-          temp60 := true.
-          temp58 success: iprot readI64].
-        temp60 ifNil: [iprot skip: temp59 type]].
-      oprot readStructEnd.
-      temp58] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-recvTestVoid
-    | f msg res | 
-    msg := oprot readMessageBegin.
-    self validateRemoteMessage: msg.
-    res := [|temp1 temp0|
-      temp0 := TResult new.
-      iprot readStructBegin.
-      [temp1 := iprot readFieldBegin.
-      temp1 type = TType stop] whileFalse: [|temp2|
-        temp1 id = 0 ifTrue: [
-          temp2 := true.
-          temp0 success: iprot readVoid].
-        temp2 ifNil: [iprot skip: temp1 type]].
-      oprot readStructEnd.
-      temp0] value.
-    oprot readMessageEnd.
-    oprot transport flush.
-    res exception ifNotNil: [res exception signal].
-    ^ res! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestByteThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testByte'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestByte_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType byte; id: 1).
-    iprot writeByte: thing asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestDoubleThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testDouble'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestDouble_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType double; id: 1).
-    iprot writeDouble: thing asFloat.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestEnumThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testEnum'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestEnum_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType i32; id: 1).
-    iprot writeI32: thing.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestExceptionArg: arg
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testException'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestException_args').
-    oprot writeFieldBegin: (TField new name: 'arg'; type: TType string; id: -1).
-    iprot writeString: arg.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestI16Thing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testI16'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestI16_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType i16; id: 1).
-    iprot writeI16: thing asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestI32Thing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testI32'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestI32_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType i32; id: 1).
-    iprot writeI32: thing asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestI64Thing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testI64'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestI64_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType i64; id: 1).
-    iprot writeI64: thing asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestInsanityArgument: argument
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testInsanity'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestInsanity_args').
-    oprot writeFieldBegin: (TField new name: 'argument'; type: TType struct; id: 1).
-    [oprot writeStructBegin: (TStruct new name: 'Insanity').
-      oprot writeFieldBegin: (TField new name: 'userMap'; type: TType map; id: 1).
-      [oprot writeMapBegin: (TMap new keyType: TType i32; valueType: TType i64; size: argument userMap size).
-        argument userMap keysAndValuesDo: [:temp68 :temp69 |
-          iprot writeI32: temp68.
-          iprot writeI64: temp69 asInteger].
-        oprot writeMapEnd] value.
-      oprot writeFieldEnd.
-      oprot writeFieldBegin: (TField new name: 'xtructs'; type: TType list; id: 2).
-      [oprot writeListBegin: (TList new elemType: TType struct; size: argument xtructs size).
-        argument xtructs do: [:temp70|
-          [oprot writeStructBegin: (TStruct new name: 'Xtruct').
-            oprot writeFieldBegin: (TField new name: 'string_thing'; type: TType string; id: 1).
-            iprot writeString: temp70 stringThing.
-            oprot writeFieldEnd.
-            oprot writeFieldBegin: (TField new name: 'byte_thing'; type: TType byte; id: 4).
-            iprot writeByte: temp70 byteThing asInteger.
-            oprot writeFieldEnd.
-            oprot writeFieldBegin: (TField new name: 'i32_thing'; type: TType i32; id: 9).
-            iprot writeI32: temp70 i32Thing asInteger.
-            oprot writeFieldEnd.
-            oprot writeFieldBegin: (TField new name: 'i64_thing'; type: TType i64; id: 11).
-            iprot writeI64: temp70 i64Thing asInteger.
-            oprot writeFieldEnd.
-            oprot writeFieldStop; writeStructEnd] value
-].
-        oprot writeListEnd] value.
-      oprot writeFieldEnd.
-      oprot writeFieldStop; writeStructEnd] value.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestListThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testList'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestList_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType list; id: 1).
-    [oprot writeListBegin: (TList new elemType: TType i32; size: thing size).
-      thing do: [:temp49|
-        iprot writeI32: temp49 asInteger
-].
-      oprot writeListEnd] value.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestMapMapHello: hello
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testMapMap'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestMapMap_args').
-    oprot writeFieldBegin: (TField new name: 'hello'; type: TType i32; id: 1).
-    iprot writeI32: hello asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestMapThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testMap'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestMap_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType map; id: 1).
-    [oprot writeMapBegin: (TMap new keyType: TType i32; valueType: TType i32; size: thing size).
-      thing keysAndValuesDo: [:temp36 :temp37 |
-        iprot writeI32: temp36 asInteger.
-        iprot writeI32: temp37 asInteger].
-      oprot writeMapEnd] value.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestMultiArg0: arg0 arg1: arg1 arg2: arg2 arg3: arg3 arg4: arg4 arg5: arg5
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testMulti'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestMulti_args').
-    oprot writeFieldBegin: (TField new name: 'arg0'; type: TType byte; id: -1).
-    iprot writeByte: arg0 asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldBegin: (TField new name: 'arg1'; type: TType i32; id: -2).
-    iprot writeI32: arg1 asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldBegin: (TField new name: 'arg2'; type: TType i64; id: -3).
-    iprot writeI64: arg2 asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldBegin: (TField new name: 'arg3'; type: TType map; id: -4).
-    [oprot writeMapBegin: (TMap new keyType: TType i16; valueType: TType string; size: arg3 size).
-      arg3 keysAndValuesDo: [:temp88 :temp89 |
-        iprot writeI16: temp88 asInteger.
-        iprot writeString: temp89].
-      oprot writeMapEnd] value.
-    oprot writeFieldEnd.
-    oprot writeFieldBegin: (TField new name: 'arg4'; type: TType i32; id: -5).
-    iprot writeI32: arg4.
-    oprot writeFieldEnd.
-    oprot writeFieldBegin: (TField new name: 'arg5'; type: TType i64; id: -6).
-    iprot writeI64: arg5 asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestMultiExceptionArg0: arg0 arg1: arg1
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testMultiException'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestMultiException_args').
-    oprot writeFieldBegin: (TField new name: 'arg0'; type: TType string; id: -1).
-    iprot writeString: arg0.
-    oprot writeFieldEnd.
-    oprot writeFieldBegin: (TField new name: 'arg1'; type: TType string; id: -2).
-    iprot writeString: arg1.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestNestThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testNest'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestNest_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType struct; id: 1).
-    [oprot writeStructBegin: (TStruct new name: 'Xtruct2').
-      oprot writeFieldBegin: (TField new name: 'byte_thing'; type: TType byte; id: 1).
-      iprot writeByte: thing byteThing asInteger.
-      oprot writeFieldEnd.
-      oprot writeFieldBegin: (TField new name: 'struct_thing'; type: TType struct; id: 2).
-      [oprot writeStructBegin: (TStruct new name: 'Xtruct').
-        oprot writeFieldBegin: (TField new name: 'string_thing'; type: TType string; id: 1).
-        iprot writeString: thing structThing stringThing.
-        oprot writeFieldEnd.
-        oprot writeFieldBegin: (TField new name: 'byte_thing'; type: TType byte; id: 4).
-        iprot writeByte: thing structThing byteThing asInteger.
-        oprot writeFieldEnd.
-        oprot writeFieldBegin: (TField new name: 'i32_thing'; type: TType i32; id: 9).
-        iprot writeI32: thing structThing i32Thing asInteger.
-        oprot writeFieldEnd.
-        oprot writeFieldBegin: (TField new name: 'i64_thing'; type: TType i64; id: 11).
-        iprot writeI64: thing structThing i64Thing asInteger.
-        oprot writeFieldEnd.
-        oprot writeFieldStop; writeStructEnd] value.
-      oprot writeFieldEnd.
-      oprot writeFieldBegin: (TField new name: 'i32_thing'; type: TType i32; id: 3).
-      iprot writeI32: thing i32Thing asInteger.
-      oprot writeFieldEnd.
-      oprot writeFieldStop; writeStructEnd] value.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestSetThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testSet'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestSet_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType set; id: 1).
-    [oprot writeSetBegin: (TSet new elemType: TType i32; size: thing size).
-      thing do: [:temp43|
-        iprot writeI32: temp43 asInteger
-].
-      oprot writeSetEnd] value.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestStringThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testString'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestString_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType string; id: 1).
-    iprot writeString: thing.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestStructThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testStruct'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestStruct_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType struct; id: 1).
-    [oprot writeStructBegin: (TStruct new name: 'Xtruct').
-      oprot writeFieldBegin: (TField new name: 'string_thing'; type: TType string; id: 1).
-      iprot writeString: thing stringThing.
-      oprot writeFieldEnd.
-      oprot writeFieldBegin: (TField new name: 'byte_thing'; type: TType byte; id: 4).
-      iprot writeByte: thing byteThing asInteger.
-      oprot writeFieldEnd.
-      oprot writeFieldBegin: (TField new name: 'i32_thing'; type: TType i32; id: 9).
-      iprot writeI32: thing i32Thing asInteger.
-      oprot writeFieldEnd.
-      oprot writeFieldBegin: (TField new name: 'i64_thing'; type: TType i64; id: 11).
-      iprot writeI64: thing i64Thing asInteger.
-      oprot writeFieldEnd.
-      oprot writeFieldStop; writeStructEnd] value.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestTypedefThing: thing
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testTypedef'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestTypedef_args').
-    oprot writeFieldBegin: (TField new name: 'thing'; type: TType i64; id: 1).
-    iprot writeI64: thing asInteger.
-    oprot writeFieldEnd.
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-sendTestVoid
-    oprot writeMessageBegin:
-      (TCallMessage new
-        name: 'testVoid'; 
-        seqid: self nextSeqid).
-    oprot writeStructBegin: (TStruct new name: 'TestVoid_args').
-    oprot writeFieldStop; writeStructEnd; writeMessageEnd.
-    oprot transport flush! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testByteThing: thing
-    "thing: byte"
-    self sendTestByteThing: thing.
-    ^ self recvTestByte success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testDoubleThing: thing
-    "thing: double"
-    self sendTestDoubleThing: thing.
-    ^ self recvTestDouble success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testEnumThing: thing
-    "thing: Numberz"
-    self sendTestEnumThing: thing.
-    ^ self recvTestEnum success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testExceptionArg: arg
-    "arg: string"
-    self sendTestExceptionArg: arg.
-    ^ self recvTestException success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testI16Thing: thing
-    "thing: i16"
-    self sendTestI16Thing: thing.
-    ^ self recvTestI16 success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testI32Thing: thing
-    "thing: i32"
-    self sendTestI32Thing: thing.
-    ^ self recvTestI32 success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testI64Thing: thing
-    "thing: i64"
-    self sendTestI64Thing: thing.
-    ^ self recvTestI64 success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testInsanityArgument: argument
-    "argument: Insanity"
-    self sendTestInsanityArgument: argument.
-    ^ self recvTestInsanity success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testListThing: thing
-    "thing: "
-    self sendTestListThing: thing.
-    ^ self recvTestList success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testMapMapHello: hello
-    "hello: i32"
-    self sendTestMapMapHello: hello.
-    ^ self recvTestMapMap success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testMapThing: thing
-    "thing: "
-    self sendTestMapThing: thing.
-    ^ self recvTestMap success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testMultiArg0: arg0 arg1: arg1 arg2: arg2 arg3: arg3 arg4: arg4 arg5: arg5
-    "arg0: byte, arg1: i32, arg2: i64, arg3: , arg4: Numberz, arg5: UserId"
-    self sendTestMultiArg0: arg0 arg1: arg1 arg2: arg2 arg3: arg3 arg4: arg4 arg5: arg5.
-    ^ self recvTestMulti success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testMultiExceptionArg0: arg0 arg1: arg1
-    "arg0: string, arg1: string"
-    self sendTestMultiExceptionArg0: arg0 arg1: arg1.
-    ^ self recvTestMultiException success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testNestThing: thing
-    "thing: Xtruct2"
-    self sendTestNestThing: thing.
-    ^ self recvTestNest success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testSetThing: thing
-    "thing: "
-    self sendTestSetThing: thing.
-    ^ self recvTestSet success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testStringThing: thing
-    "thing: string"
-    self sendTestStringThing: thing.
-    ^ self recvTestString success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testStructThing: thing
-    "thing: Xtruct"
-    self sendTestStructThing: thing.
-    ^ self recvTestStruct success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testTypedefThing: thing
-    "thing: UserId"
-    self sendTestTypedefThing: thing.
-    ^ self recvTestTypedef success 
-! !
-
-!ThriftTestClient methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-testVoid
-    ""
-    self sendTestVoid.
-    ^ self recvTestVoid success 
-! !
-
 Object subclass: #TField
 	instanceVariableNames: 'name type id'
 	classVariableNames: ''
@@ -1459,7 +206,7 @@
 readFieldBegin
 	| field |
 	field := TField new type: self readByte.
-	
+
 	^ field type = TType stop
 		ifTrue: [field]
 		ifFalse: [field id: self readI16; yourself]! !
@@ -1502,10 +249,10 @@
 readMessageBegin
 	| version |
 	version := self readI32.
-	
+
 	(version bitAnd: self versionMask) = self version1
 		ifFalse: [TProtocolError signalWithCode: TProtocolError badVersion].
-		
+
 	^ TMessage new
 		type: (version bitAnd: 16r000000FF);
 		name: self readString;
@@ -1711,7 +458,7 @@
 		set := self readSetBegin.
 		set size timesRepeat: [self skip: set elemType].
 		^ self readSetEnd].
-	
+
 	self error: 'Unknown type'! !
 
 !TProtocol methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 23:02'!
@@ -1933,42 +680,6 @@
 name: aString
 	name := aString! !
 
-Object subclass: #TTest
-	instanceVariableNames: 'prot'
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-!TTest methodsFor: 'as yet unclassified' stamp: 'pc 11/1/2007 04:47'!
-protocol: aProtocol
-	prot := aProtocol! !
-
-!TTest methodsFor: 'as yet unclassified' stamp: 'pc 11/1/2007 04:49'!
-runAll
-	| c |
-	c := ThriftTestClient new inProtocol: prot.
-	c testByteThing: 32.
-	c testDoubleThing: -1.0.
-	c testEnumThing: 1.
-	c testExceptionArg: 'foo'.
-	c testI16Thing: 16.
-	c testI16Thing: -16.
-	c testI32Thing: 32.
-	c testI32Thing: -32.
-	c testI64Thing: 123.
-	c testDoubleThing: 1.2.
-	c testStructThing: (Xtruct new byteThing: 1; i32Thing: 2; i64Thing: 3; stringThing: 'foo').
-	c testSetThing: (Set new).
-	c testListThing: (OrderedCollection new).
-	c testEnumThing: 1.
-	c testInsanityArgument:
-		(Insanity new
-			userMap: (Dictionary new at: 1 put: 2; yourself);
-		xtructs: (OrderedCollection new)).
-	c testMultiArg0: 1 arg1: 2 arg2: 3 arg3: (Dictionary new) arg4: ((ThriftTest enums at: 	'Numberz') at: 'FIVE') arg5: 6. 
-	c testExceptionArg: 'Xception'.
-	c testMultiExceptionArg0: 'Xception' arg1: 'Xception2'! !
-
 Object subclass: #TTransport
 	instanceVariableNames: ''
 	classVariableNames: ''
@@ -2077,71 +788,3 @@
 !TType class methodsFor: 'as yet unclassified' stamp: 'pc 10/24/2007 17:03'!
 void
 	^ 1! !
-
-Object subclass: #Xtruct
-	instanceVariableNames: 'stringThing byteThing i32Thing i64Thing'
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-byteThing
-    ^ byteThing! !
-
-!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-byteThing: aByte
-    byteThing := aByte! !
-
-!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-i32Thing
-    ^ i32Thing! !
-
-!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-i32Thing: anI32
-    i32Thing := anI32! !
-
-!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-i64Thing
-    ^ i64Thing! !
-
-!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-i64Thing: anI64
-    i64Thing := anI64! !
-
-!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-stringThing
-    ^ stringThing! !
-
-!Xtruct methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-stringThing: aString
-    stringThing := aString! !
-
-Object subclass: #Xtruct2
-	instanceVariableNames: 'byteThing structThing i32Thing'
-	classVariableNames: ''
-	poolDictionaries: ''
-	category: 'Thrift-Test'!
-
-!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-byteThing
-    ^ byteThing! !
-
-!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-byteThing: aByte
-    byteThing := aByte! !
-
-!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-i32Thing
-    ^ i32Thing! !
-
-!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-i32Thing: anI32
-    i32Thing := anI32! !
-
-!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-structThing
-    ^ structThing! !
-
-!Xtruct2 methodsFor: 'as yet uncategorized' stamp: 'thrift 11/01/2007 04:43'!
-structThing: aXtruct
-    structThing := aXtruct! !
diff --git a/tutorial/tutorial.thrift b/tutorial/tutorial.thrift
index 7b377d6..f5e5836 100755
--- a/tutorial/tutorial.thrift
+++ b/tutorial/tutorial.thrift
@@ -48,6 +48,7 @@
 java_package tutorial
 php_namespace tutorial
 perl_package tutorial
+smalltalk_category Thrift-Tutorial
 
 /**
  * Thrift lets you do typedefs to get pretty names for your types. Standard
