diff --git a/compiler/cpp/src/thrift/generate/t_erl_generator.cc b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
index c3e5245..5a40e6d 100644
--- a/compiler/cpp/src/thrift/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
@@ -138,6 +138,7 @@
   std::string render_type(t_type* type);
   std::string render_base_type(t_type* type);
   std::string render_string_type();
+  std::string render_const_name(std::string sname, std::string name);
 
   //  std::string render_default_value(t_type* type);
   std::string render_default_value(t_field* field);
@@ -488,6 +489,12 @@
  * @param ttypedef The type definition
  */
 void t_erl_generator::generate_typedef(t_typedef* ttypedef) {
+  // t_type* type = ttypedef->get_type();
+  // if (type->is_base_type()) {
+  //   f_types_hrl_file_ << "-nominal ";
+  // } else {
+  //   f_types_hrl_file_ << "-type ";
+  // }
   f_types_hrl_file_ << "-type " << type_name(ttypedef) << "() :: " << render_typedef_type(ttypedef) << ".\n" << "\n";
 }
 
@@ -562,7 +569,7 @@
 void t_erl_generator::generate_enum(t_enum* tenum) {
   vector<t_enum_value*> constants = tenum->get_constants();
   vector<t_enum_value*>::iterator c_iter;
-  vector<string> value_names;
+  vector<string> const_names;
   vector<string>::iterator names_iter;
 
   v_enums_.push_back(tenum);
@@ -573,10 +580,9 @@
   for (c_iter = constants.begin(); c_iter != constants.end(); ++c_iter) {
     int value = (*c_iter)->get_value();
     string name = (*c_iter)->get_name();
-    string define_name = constify(make_safe_for_module_name(program_name_)) + "_" +
-                         constify(tenum->get_name()) + "_" + constify(name);
-    indent(f_types_hrl_file_) << "-define(" << define_name << ", " << value << ")." << '\n';
-    value_names.push_back(define_name);
+    string const_name = render_const_name(tenum->get_name(), name);
+    indent(f_types_hrl_file_) << "-define(" << const_name << ", " << value << ")." << '\n';
+    const_names.push_back(const_name);
   }
   f_types_hrl_file_ << '\n';
 
@@ -584,7 +590,7 @@
   string value_indent(enum_definition.size(), ' ');
   f_types_hrl_file_ << enum_definition;
   bool names_iter_first = false;
-  for (names_iter = value_names.begin(); names_iter != value_names.end(); ++names_iter) {
+  for (names_iter = const_names.begin(); names_iter != const_names.end(); ++names_iter) {
     if (names_iter_first) {
       f_types_hrl_file_ << " |" << "\n" << value_indent;
     } else {
@@ -595,6 +601,10 @@
   f_types_hrl_file_ << ".\n" << "\n";
 }
 
+string t_erl_generator::render_const_name(std::string sname, std::string name) {
+  return constify(make_safe_for_module_name(program_name_)) + "_" + constify(sname) + "_" + constify(name);
+}
+
 void t_erl_generator::generate_enum_info(t_enum* tenum){
   vector<t_enum_value*> constants = tenum->get_constants();
   size_t num_constants = constants.size();
@@ -679,7 +689,8 @@
       throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase);
     }
   } else if (type->is_enum()) {
-    indent(out) << value->get_integer();
+    string name = (((t_enum*)type)->get_constant_by_value(value->get_integer()))->get_name();
+    indent(out) << "?" << render_const_name(type->get_name(), name);
 
   } else if (type->is_struct() || type->is_xception()) {
     out << "#" << type_name(type) << "{";
