diff --git a/compiler/cpp/src/generate/t_gv_generator.cc b/compiler/cpp/src/generate/t_gv_generator.cc
index 4511b29..59e06a0 100644
--- a/compiler/cpp/src/generate/t_gv_generator.cc
+++ b/compiler/cpp/src/generate/t_gv_generator.cc
@@ -298,10 +298,11 @@
   for (; fn_iter != functions.end(); fn_iter++) {
     string fn_name = (*fn_iter)->get_name();
 
-    f_out_ << "function_" << fn_name;
+    f_out_ << "function_" << service_name << fn_name;
     f_out_ << "[label=\"<return_type>function " << escape_string(fn_name);
     f_out_ << " :: ";
-    print_type((*fn_iter)->get_returntype(), "function_" + fn_name + ":return_type");
+    print_type((*fn_iter)->get_returntype(),
+               "function_" + service_name + fn_name + ":return_type");
 
     vector<t_field*> args = (*fn_iter)->get_arglist()->get_members();
     vector<t_field*>::iterator arg_iter = args.begin();
@@ -313,8 +314,8 @@
         print_const_value((*arg_iter)->get_type(), (*arg_iter)->get_value());
       }
       f_out_ << " :: ";
-      print_type((*arg_iter)->get_type(),
-                 "function_" + fn_name + ":param_" + (*arg_iter)->get_name());
+      print_type((*arg_iter)->get_type(), "function_" + service_name + fn_name
+                 + ":param_" + (*arg_iter)->get_name());
     }
     // end of node
     f_out_ << "\"];" << endl;
@@ -324,8 +325,8 @@
       vector<t_field*> excepts = (*fn_iter)->get_xceptions()->get_members();
       vector<t_field*>::iterator ex_iter = excepts.begin();
       for (; ex_iter != excepts.end(); ex_iter++) {
-        edges.push_back("function_" + fn_name + " -> " + (*ex_iter)->get_type()->get_name()
-                        + " [color=red]");
+        edges.push_back("function_" + service_name + fn_name + " -> "
+                        + (*ex_iter)->get_type()->get_name() + " [color=red]");
       }
     }
   }
