diff --git a/lib/cpp/src/Thrift.cpp b/lib/cpp/src/Thrift.cpp
index fb6bcbc..bbf9710 100644
--- a/lib/cpp/src/Thrift.cpp
+++ b/lib/cpp/src/Thrift.cpp
@@ -11,7 +11,7 @@
 #include <stdarg.h>
 #include <stdio.h>
 
-namespace facebook { namespace thrift {
+namespace apache { namespace thrift {
 
 TOutput GlobalOutput;
 
@@ -77,29 +77,29 @@
 #endif  // HAVE_STRERROR_R
 }
 
-uint32_t TApplicationException::read(facebook::thrift::protocol::TProtocol* iprot) {
+uint32_t TApplicationException::read(apache::thrift::protocol::TProtocol* iprot) {
   uint32_t xfer = 0;
   std::string fname;
-  facebook::thrift::protocol::TType ftype;
+  apache::thrift::protocol::TType ftype;
   int16_t fid;
 
   xfer += iprot->readStructBegin(fname);
 
   while (true) {
     xfer += iprot->readFieldBegin(fname, ftype, fid);
-    if (ftype == facebook::thrift::protocol::T_STOP) {
+    if (ftype == apache::thrift::protocol::T_STOP) {
       break;
     }
     switch (fid) {
     case 1:
-      if (ftype == facebook::thrift::protocol::T_STRING) {
+      if (ftype == apache::thrift::protocol::T_STRING) {
         xfer += iprot->readString(message_);
       } else {
         xfer += iprot->skip(ftype);
       }
       break;
     case 2:
-      if (ftype == facebook::thrift::protocol::T_I32) {
+      if (ftype == apache::thrift::protocol::T_I32) {
         int32_t type;
         xfer += iprot->readI32(type);
         type_ = (TApplicationExceptionType)type;
@@ -118,13 +118,13 @@
   return xfer;
 }
 
-uint32_t TApplicationException::write(facebook::thrift::protocol::TProtocol* oprot) const {
+uint32_t TApplicationException::write(apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
   xfer += oprot->writeStructBegin("TApplicationException");
-  xfer += oprot->writeFieldBegin("message", facebook::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeFieldBegin("message", apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(message_);
   xfer += oprot->writeFieldEnd();
-  xfer += oprot->writeFieldBegin("type", facebook::thrift::protocol::T_I32, 2);
+  xfer += oprot->writeFieldBegin("type", apache::thrift::protocol::T_I32, 2);
   xfer += oprot->writeI32(type_);
   xfer += oprot->writeFieldEnd();
   xfer += oprot->writeFieldStop();
@@ -132,4 +132,4 @@
   return xfer;
 }
 
-}} // facebook::thrift
+}} // apache::thrift
