diff --git a/compiler/cpp/src/thrift/generate/t_erl_generator.cc b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
index ac5f066..c3e5245 100644
--- a/compiler/cpp/src/thrift/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
@@ -133,8 +133,10 @@
   std::string render_member_value(t_field* field);
   std::string render_member_requiredness(t_field* field);
 
+  std::string render_typedef_type(t_typedef* ttypedef);
+
+  std::string render_type(t_type* type);
   std::string render_base_type(t_type* type);
-  std::string render_typedef_type(t_type* ttype);
   std::string render_string_type();
 
   //  std::string render_default_value(t_type* type);
@@ -486,8 +488,7 @@
  * @param ttypedef The type definition
  */
 void t_erl_generator::generate_typedef(t_typedef* ttypedef) {
-  t_type* type = ttypedef->get_type();
-  f_types_hrl_file_ << "-type " << type_name(ttypedef) << "() :: " << render_typedef_type(type) << ".\n" << "\n";
+  f_types_hrl_file_ << "-type " << type_name(ttypedef) << "() :: " << render_typedef_type(ttypedef) << ".\n" << "\n";
 }
 
 
@@ -810,11 +811,15 @@
 
 string t_erl_generator::render_member_type(t_field* field) {
   t_type* type = field->get_type();
+  return render_type(type);
+}
+
+string t_erl_generator::render_type(t_type* type) {
   if (type->is_base_type()) {
     return render_base_type(type);
   } else if (type->is_enum()) {
     return type_name(type) + "()";
-  } else if (type->is_struct() || type->is_typedef()) {
+  } else if (type->is_struct() || type->is_xception() || type->is_typedef()) {
     return type_name(type) + "()";
   } else if (type->is_map()) {
     if (maps_) {
@@ -874,26 +879,9 @@
   }
 }
 
-string t_erl_generator::render_typedef_type(t_type* ttype) {
-  if (ttype->is_base_type()) {
-    return render_base_type(ttype);
-  } else if (ttype->is_enum()) {
-    return type_name(ttype) + "()";
-  } else if (ttype->is_struct() || ttype->is_xception() || ttype->is_typedef()) {
-    return type_name(ttype) + "()";
-  } else if (ttype->is_map()) {
-    if (maps_) {
-      return "map()";
-    } else {
-      return "dict:dict()";
-    }
-  } else if (ttype->is_set()) {
-    return "sets:set()";
-  } else if (ttype->is_list()) {
-    return "list()";
-  } else {
-    throw "compiler error: unsupported type " + ttype->get_name();
-  }
+string t_erl_generator::render_typedef_type(t_typedef* ttypedef) {
+  t_type* type = ttypedef->get_type();
+  return render_type(type);
 }
 
 /**
