diff --git a/codegen/vulkan/scripts/cereal/encoder.py b/codegen/vulkan/scripts/cereal/encoder.py
index 6de55c1..2a8e5f3 100644
--- a/codegen/vulkan/scripts/cereal/encoder.py
+++ b/codegen/vulkan/scripts/cereal/encoder.py
@@ -18,7 +18,7 @@
 from .wrapperdefs import VULKAN_STREAM_TYPE_GUEST
 
 encoder_decl_preamble = """
-using android::base::guest::HealthMonitor;
+using gfxstream::guest::HealthMonitor;
 
 class VkEncoder {
 public:
@@ -40,9 +40,9 @@
 
 using namespace gfxstream::vk;
 
-using android::base::guest::AutoLock;
-using android::base::guest::Lock;
-using android::base::BumpPool;
+using gfxstream::guest::AutoLock;
+using gfxstream::guest::Lock;
+using gfxstream::guest::BumpPool;
 
 #include "VkEncoder.cpp.inl"
 
diff --git a/common/vulkan/CMakeLists.txt b/common/vulkan/CMakeLists.txt
index d1a78ed..c7865bc 100644
--- a/common/vulkan/CMakeLists.txt
+++ b/common/vulkan/CMakeLists.txt
@@ -2,4 +2,4 @@
 target_include_directories(
     gfxstream_vulkan_headers
     INTERFACE include)
-android_license(TARGET gfxstream_vulkan_headers LICENSE Apache-2.0)
+android_license(TARGET gfxstream_vulkan_headers LICENSE Apache-2.0)
\ No newline at end of file
diff --git a/guest/OpenglCodecCommon/GLClientState.cpp b/guest/OpenglCodecCommon/GLClientState.cpp
index 7a1fad4..a940b27 100644
--- a/guest/OpenglCodecCommon/GLClientState.cpp
+++ b/guest/OpenglCodecCommon/GLClientState.cpp
@@ -36,8 +36,8 @@
 #include <GLES3/gl3.h>
 #include <GLES3/gl31.h>
 
-using android::base::guest::AutoReadLock;
-using android::base::guest::AutoWriteLock;
+using gfxstream::guest::AutoReadLock;
+using gfxstream::guest::AutoWriteLock;
 
 void GLClientState::init() {
     m_initialized = false;
@@ -3045,8 +3045,8 @@
     return m_extensions.find(ext) != std::string::npos;
 }
 
-using android::base::guest::AutoLock;
-using android::base::guest::Lock;
+using gfxstream::guest::AutoLock;
+using gfxstream::guest::Lock;
 
 // A process-wide fence registry (because we can use fence sync objects across multiple contexts)
 struct FenceRegistry {
diff --git a/guest/OpenglCodecCommon/GLSharedGroup.h b/guest/OpenglCodecCommon/GLSharedGroup.h
index 61bf311..19b7aab 100755
--- a/guest/OpenglCodecCommon/GLSharedGroup.h
+++ b/guest/OpenglCodecCommon/GLSharedGroup.h
@@ -41,8 +41,8 @@
 #include "IndexRangeCache.h"
 #include "StateTrackingSupport.h"
 
-using android::base::guest::AutoLock;
-using android::base::guest::Lock;
+using gfxstream::guest::AutoLock;
+using gfxstream::guest::Lock;
 
 struct BufferData {
     BufferData();
diff --git a/guest/OpenglCodecCommon/StateTrackingSupport.h b/guest/OpenglCodecCommon/StateTrackingSupport.h
index 6979944..01fcd6b 100644
--- a/guest/OpenglCodecCommon/StateTrackingSupport.h
+++ b/guest/OpenglCodecCommon/StateTrackingSupport.h
@@ -71,7 +71,7 @@
     }
 
 private:
-    using Storage = android::base::HybridComponentManager<10000, IndexType, uint64_t>;
+    using Storage = gfxstream::guest::HybridComponentManager<10000, IndexType, uint64_t>;
     Storage mStorage;
 };
 
@@ -92,10 +92,10 @@
     bool validInProgram = false;
 };
 
-using UniformValidationInfo = android::base::HybridComponentManager<1000, uint32_t, UniformLocationInfo>;
-using AttribValidationInfo = android::base::HybridComponentManager<16, uint32_t, AttribIndexInfo>;
+using UniformValidationInfo = gfxstream::guest::HybridComponentManager<1000, uint32_t, UniformLocationInfo>;
+using AttribValidationInfo = gfxstream::guest::HybridComponentManager<16, uint32_t, AttribIndexInfo>;
 
-using LastQueryTargetInfo = android::base::HybridComponentManager<1000, uint32_t, uint32_t>;
+using LastQueryTargetInfo = gfxstream::guest::HybridComponentManager<1000, uint32_t, uint32_t>;
 
 using ExistenceMap = PredicateMap<uint32_t, false>;
 
@@ -130,8 +130,8 @@
 };
 
 struct RenderbufferInfo {
-    android::base::guest::Lock infoLock;
-    android::base::HybridComponentManager<1000, uint32_t, std::shared_ptr<RboProps>> component;
+    gfxstream::guest::Lock infoLock;
+    gfxstream::guest::HybridComponentManager<1000, uint32_t, std::shared_ptr<RboProps>> component;
 
     void lock() { infoLock.lock(); }
     void unlock() { infoLock.unlock(); }
@@ -202,8 +202,8 @@
 };
 
 struct SamplerInfo {
-    android::base::guest::Lock infoLock;
-    android::base::HybridComponentManager<1000, uint32_t, SamplerProps> component;
+    gfxstream::guest::Lock infoLock;
+    gfxstream::guest::HybridComponentManager<1000, uint32_t, SamplerProps> component;
 
     void lock() { infoLock.lock(); }
     void unlock() { infoLock.unlock(); }
diff --git a/guest/OpenglCodecCommon/TextureSharedData.h b/guest/OpenglCodecCommon/TextureSharedData.h
index fd927a0..5f830e3 100644
--- a/guest/OpenglCodecCommon/TextureSharedData.h
+++ b/guest/OpenglCodecCommon/TextureSharedData.h
@@ -22,7 +22,7 @@
 
 #include "aemu/base/synchronization/AndroidLock.h"
 
-using android::base::guest::ReadWriteLock;
+using gfxstream::guest::ReadWriteLock;
 
 struct TextureDims {
     std::map<GLsizei, GLsizei> widths;
diff --git a/guest/OpenglSystemCommon/AddressSpaceStream.h b/guest/OpenglSystemCommon/AddressSpaceStream.h
index 1884c2d..2c9e9f4 100644
--- a/guest/OpenglSystemCommon/AddressSpaceStream.h
+++ b/guest/OpenglSystemCommon/AddressSpaceStream.h
@@ -22,7 +22,7 @@
 #include "aemu/base/AndroidHealthMonitor.h"
 #include "goldfish_address_space.h"
 
-using android::base::guest::HealthMonitor;
+using gfxstream::guest::HealthMonitor;
 using gfxstream::IOStream;
 
 class AddressSpaceStream;
diff --git a/guest/OpenglSystemCommon/HostConnection.cpp b/guest/OpenglSystemCommon/HostConnection.cpp
index f0fac92..e9cde4c 100644
--- a/guest/OpenglSystemCommon/HostConnection.cpp
+++ b/guest/OpenglSystemCommon/HostConnection.cpp
@@ -41,9 +41,9 @@
 #define DPRINT(...)
 #endif
 
-using android::base::guest::CreateHealthMonitor;
-using android::base::guest::HealthMonitor;
-using android::base::guest::HealthMonitorConsumerBasic;
+using gfxstream::guest::CreateHealthMonitor;
+using gfxstream::guest::HealthMonitor;
+using gfxstream::guest::HealthMonitorConsumerBasic;
 using gfxstream::GoldfishGralloc;
 using gfxstream::IOStream;
 using gfxstream::MinigbmGralloc;
@@ -107,7 +107,7 @@
 #include "QemuPipeStream.h"
 #include "ThreadInfo.h"
 
-using android::base::guest::getCurrentThreadId;
+using gfxstream::guest::getCurrentThreadId;
 
 #ifdef VIRTIO_GPU
 
@@ -231,7 +231,7 @@
       m_noHostError(true),
       m_rendernodeFd(-1) {
 #ifdef HOST_BUILD
-    android::base::initializeTracing();
+    gfxstream::guest::initializeTracing();
 #endif
 }
 
diff --git a/guest/OpenglSystemCommon/address_space_graphics_types.h b/guest/OpenglSystemCommon/address_space_graphics_types.h
index de3f49f..e52c8fe 100644
--- a/guest/OpenglSystemCommon/address_space_graphics_types.h
+++ b/guest/OpenglSystemCommon/address_space_graphics_types.h
@@ -65,8 +65,8 @@
 // so that the host side (which is usually a separate thread that we don't want
 // to spin too much) wakes up and processes data.
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 class Stream;
 
@@ -305,9 +305,9 @@
 using ConsumerDestroyCallback =
     std::function<void(void*)>;
 using ConsumerSaveCallback =
-    std::function<void(void*, base::Stream*)>;
+    std::function<void(void*, gfxstream::guest::Stream*)>;
 using ConsumerLoadCallback =
-    std::function<void(void*, base::Stream*)>;
+    std::function<void(void*, gfxstream::guest::Stream*)>;
 
 struct ConsumerInterface {
     ConsumerCreateCallback create;
diff --git a/guest/android-emu/aemu/base/AlignedBuf.h b/guest/android-emu/aemu/base/AlignedBuf.h
index e0c1106..bf1469e 100644
--- a/guest/android-emu/aemu/base/AlignedBuf.h
+++ b/guest/android-emu/aemu/base/AlignedBuf.h
@@ -30,7 +30,8 @@
 #include <malloc.h>
 #endif
 
-namespace android {
+namespace gfxstream {
+namespace guest {
 
 template <class T, size_t align>
 class AlignedBuf {
@@ -149,4 +150,5 @@
 void* aligned_buf_alloc(size_t align, size_t size);
 void aligned_buf_free(void* buf);
 
-}  // namespace android
+}  // namespace guest
+}  // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/Allocator.h b/guest/android-emu/aemu/base/Allocator.h
index d875de1..54a3b30 100644
--- a/guest/android-emu/aemu/base/Allocator.h
+++ b/guest/android-emu/aemu/base/Allocator.h
@@ -17,8 +17,8 @@
 #include <stddef.h>
 #include <string.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 // A generic memory allocator interface which could be used to allocate
 // a certain size of memory region, or memory region for arrays / strings.
diff --git a/guest/android-emu/aemu/base/AndroidHealthMonitor.cpp b/guest/android-emu/aemu/base/AndroidHealthMonitor.cpp
index 6caa454..54e995d 100644
--- a/guest/android-emu/aemu/base/AndroidHealthMonitor.cpp
+++ b/guest/android-emu/aemu/base/AndroidHealthMonitor.cpp
@@ -18,11 +18,10 @@
 #include <map>
 #include <sys/time.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
-using android::base::guest::AutoLock;
+using gfxstream::guest::AutoLock;
 using std::chrono::duration_cast;
 
 template <class... Ts>
@@ -279,6 +278,5 @@
 
 template class HealthMonitor<steady_clock>;
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/AndroidHealthMonitor.h b/guest/android-emu/aemu/base/AndroidHealthMonitor.h
index 685ab94..faf3582 100644
--- a/guest/android-emu/aemu/base/AndroidHealthMonitor.h
+++ b/guest/android-emu/aemu/base/AndroidHealthMonitor.h
@@ -35,18 +35,17 @@
 
 #include <log/log.h>
 
-using android::base::guest::EventHangMetadata;
+using gfxstream::guest::EventHangMetadata;
 
 #define WATCHDOG_BUILDER(healthMonitorPtr, msg)                                              \
-    ::android::base::guest::HealthWatchdogBuilder<std::decay_t<decltype(*(healthMonitorPtr))>>( \
+    gfxstream::guest::HealthWatchdogBuilder<std::decay_t<decltype(*(healthMonitorPtr))>>( \
         (healthMonitorPtr), __FILE__, __func__, msg, __LINE__)
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
-using android::base::guest::ConditionVariable;
-using android::base::guest::Lock;
+using gfxstream::guest::ConditionVariable;
+using gfxstream::guest::Lock;
 using std::chrono::duration;
 using std::chrono::steady_clock;
 using std::chrono::time_point;
@@ -62,7 +61,7 @@
 // HealthMonitorConsumer, it will log hang and unhang events when it detects tasks hanging/resuming.
 // Design doc: http://go/gfxstream-health-monitor
 template <class Clock = steady_clock>
-class HealthMonitor : public android::base::guest::Thread {
+class HealthMonitor : public gfxstream::guest::Thread {
    public:
     // Alias for task id.
     using Id = uint64_t;
@@ -278,6 +277,5 @@
 std::unique_ptr<HealthMonitor<>> CreateHealthMonitor(
     HealthMonitorConsumer& consumer, uint64_t heartbeatInterval = kDefaultIntervalMs);
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/AndroidHealthMonitorConsumer.h b/guest/android-emu/aemu/base/AndroidHealthMonitorConsumer.h
index 642cd50..e2a4776 100644
--- a/guest/android-emu/aemu/base/AndroidHealthMonitorConsumer.h
+++ b/guest/android-emu/aemu/base/AndroidHealthMonitorConsumer.h
@@ -26,8 +26,7 @@
 
 // Interface for consuming events from HealthMonitor
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 // Struct for hanging events
@@ -78,6 +77,5 @@
     virtual ~HealthMonitorConsumer() {}
 };
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.cpp b/guest/android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.cpp
index d5aa26e..c3e0bf5 100644
--- a/guest/android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.cpp
+++ b/guest/android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.cpp
@@ -18,8 +18,7 @@
 
 #include "aemu/base/Process.h"
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 void logEventHangMetadata(const EventHangMetadata* metadata) {
@@ -54,6 +53,5 @@
     logEventHangMetadata(metadata);
 }
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.h b/guest/android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.h
index 9f3dc03..a7651ef 100644
--- a/guest/android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.h
+++ b/guest/android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.h
@@ -16,8 +16,7 @@
 
 #include "AndroidHealthMonitorConsumer.h"
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 class HealthMonitorConsumerBasic: public HealthMonitorConsumer {
 public:
@@ -27,6 +26,5 @@
                             int64_t hungMs) override;
 
 };
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/AndroidSubAllocator.cpp b/guest/android-emu/aemu/base/AndroidSubAllocator.cpp
index ac0a2a0..5f5d387 100644
--- a/guest/android-emu/aemu/base/AndroidSubAllocator.cpp
+++ b/guest/android-emu/aemu/base/AndroidSubAllocator.cpp
@@ -22,8 +22,7 @@
 
 #include <log/log.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 class SubAllocator::Impl {
@@ -236,5 +235,4 @@
 }
 
 } // namespace guest
-} // namespace base
-} // namespace android
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/AndroidSubAllocator.h b/guest/android-emu/aemu/base/AndroidSubAllocator.h
index 8442137..352ea4f 100644
--- a/guest/android-emu/aemu/base/AndroidSubAllocator.h
+++ b/guest/android-emu/aemu/base/AndroidSubAllocator.h
@@ -17,18 +17,10 @@
 #include <stddef.h>
 #include <string.h>
 
-namespace android {
-namespace base {
-
-class Stream;
-
-} // namespace base
-} // namespace android
-
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
+class Stream;
 
 // Class to create sub-allocations in an existing buffer. Similar interface to
 // Pool, but underlying mechanism is different as it's difficult to combine
@@ -99,5 +91,4 @@
 };
 
 } // namespace guest
-} // namespace base
-} // namespace android
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/BumpPool.h b/guest/android-emu/aemu/base/BumpPool.h
index a1c1280..161ff70 100644
--- a/guest/android-emu/aemu/base/BumpPool.h
+++ b/guest/android-emu/aemu/base/BumpPool.h
@@ -21,8 +21,8 @@
 
 #include <inttypes.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 // Class to make it easier to set up memory regions where it is fast
 // to allocate buffers AND we don't care about freeing individual pieces,
diff --git a/guest/android-emu/aemu/base/EnumFlags.h b/guest/android-emu/aemu/base/EnumFlags.h
index 1597dda..b43e5d1 100644
--- a/guest/android-emu/aemu/base/EnumFlags.h
+++ b/guest/android-emu/aemu/base/EnumFlags.h
@@ -23,13 +23,13 @@
 //
 // To enable the flag operators for your enum, most probably you just need to
 // include this file. The only exception is if your enum is located in some
-// namespace other than android, android::base or global. In that case you also
+// namespace other than android, gfxstream::guest or global. In that case you also
 // need to add the following using to bring in the operators:
 //
-// using namespace ::android::base::EnumFlags;
+// using namespace gfxstream::guest::EnumFlags;
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 namespace EnumFlags {
 
 // A predicate which checks if template agument is a scoped enum
@@ -108,13 +108,13 @@
 
 // For the ADL to kick in let's make sure we bring all the operators into our
 // main AndroidEmu namespaces...
-using namespace ::android::base::EnumFlags;
+using namespace gfxstream::guest::EnumFlags;
 
 }  // namespace base
 
-using namespace ::android::base::EnumFlags;
+using namespace gfxstream::guest::EnumFlags;
 
 }  // namespace android
 
 // ... and into the global one, where most of the client functions are
-using namespace ::android::base::EnumFlags;
+using namespace gfxstream::guest::EnumFlags;
diff --git a/guest/android-emu/aemu/base/Optional.h b/guest/android-emu/aemu/base/Optional.h
index d0a8aa7..cb63273 100644
--- a/guest/android-emu/aemu/base/Optional.h
+++ b/guest/android-emu/aemu/base/Optional.h
@@ -99,8 +99,8 @@
 //  - Comparison operators are provided. Beware: an empty Optional<Foo>
 //    is always smaller than any Foo value.
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 namespace details {
 
diff --git a/guest/android-emu/aemu/base/Pool.cpp b/guest/android-emu/aemu/base/Pool.cpp
index 1891e2c..38b7b02 100644
--- a/guest/android-emu/aemu/base/Pool.cpp
+++ b/guest/android-emu/aemu/base/Pool.cpp
@@ -29,8 +29,8 @@
 
 #endif
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 // A Pool consists of:
 // - Heaps one for each allocation size
diff --git a/guest/android-emu/aemu/base/Pool.h b/guest/android-emu/aemu/base/Pool.h
index 616a35b..8c88935 100644
--- a/guest/android-emu/aemu/base/Pool.h
+++ b/guest/android-emu/aemu/base/Pool.h
@@ -21,8 +21,8 @@
 #include <stddef.h>
 #include <string.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 // Class to make it easier to set up memory regions where it is fast
 // to allocate/deallocate buffers that have size within
diff --git a/guest/android-emu/aemu/base/Process.cpp b/guest/android-emu/aemu/base/Process.cpp
index d4f2ee7..f2ef5b4 100644
--- a/guest/android-emu/aemu/base/Process.cpp
+++ b/guest/android-emu/aemu/base/Process.cpp
@@ -20,8 +20,7 @@
 #endif
 #include <string>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 std::string getProcessName() {
@@ -41,6 +40,5 @@
     return processName;
 }
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
\ No newline at end of file
+} // namespace guest
+} // namespace gfxstream
\ No newline at end of file
diff --git a/guest/android-emu/aemu/base/Process.h b/guest/android-emu/aemu/base/Process.h
index 003058e..451b6ae 100644
--- a/guest/android-emu/aemu/base/Process.h
+++ b/guest/android-emu/aemu/base/Process.h
@@ -17,12 +17,10 @@
 
 #include <string>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 std::string getProcessName();
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
\ No newline at end of file
+} // namespace guest
+} // namespace gfxstream
\ No newline at end of file
diff --git a/guest/android-emu/aemu/base/StringFormat.cpp b/guest/android-emu/aemu/base/StringFormat.cpp
index 2f97e69..60a6a4b 100644
--- a/guest/android-emu/aemu/base/StringFormat.cpp
+++ b/guest/android-emu/aemu/base/StringFormat.cpp
@@ -16,8 +16,8 @@
 
 #include <stdio.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 std::string StringFormatRaw(const char* format, ...) {
     va_list args;
diff --git a/guest/android-emu/aemu/base/StringFormat.h b/guest/android-emu/aemu/base/StringFormat.h
index 9b68c24..b8a7f5e 100644
--- a/guest/android-emu/aemu/base/StringFormat.h
+++ b/guest/android-emu/aemu/base/StringFormat.h
@@ -20,8 +20,8 @@
 
 #include <stdarg.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 // Create a new string instance that contains the printf-style formatted
 // output from |format| and potentially any following arguments.
diff --git a/guest/android-emu/aemu/base/Tracing.cpp b/guest/android-emu/aemu/base/Tracing.cpp
index d43f391..f0c49e7 100644
--- a/guest/android-emu/aemu/base/Tracing.cpp
+++ b/guest/android-emu/aemu/base/Tracing.cpp
@@ -27,8 +27,8 @@
 #else
 #endif
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 bool isTracingEnabled() {
 #if defined(__ANDROID__) || defined(HOST_BUILD)
diff --git a/guest/android-emu/aemu/base/Tracing.h b/guest/android-emu/aemu/base/Tracing.h
index e13d202..7f25205 100644
--- a/guest/android-emu/aemu/base/Tracing.h
+++ b/guest/android-emu/aemu/base/Tracing.h
@@ -17,8 +17,8 @@
 // Library to perform tracing. Talks to platform-specific
 // tracing libraries.
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 #ifdef HOST_BUILD
 void initializeTracing();
@@ -68,7 +68,7 @@
 #define AEMU_GENSYM(x) __AEMU_GENSYM1(x,__COUNTER__)
 
 #ifdef HOST_BUILD
-#define AEMU_SCOPED_TRACE(tag) __attribute__ ((unused)) android::base::ScopedTrace AEMU_GENSYM(aemuScopedTrace_)(tag)
+#define AEMU_SCOPED_TRACE(tag) __attribute__ ((unused)) gfxstream::guest::ScopedTrace AEMU_GENSYM(aemuScopedTrace_)(tag)
 #else
-#define AEMU_SCOPED_TRACE(tag) __attribute__ ((unused)) android::base::ScopedTraceGuest AEMU_GENSYM(aemuScopedTrace_)(tag)
+#define AEMU_SCOPED_TRACE(tag) __attribute__ ((unused)) gfxstream::guest::ScopedTraceGuest AEMU_GENSYM(aemuScopedTrace_)(tag)
 #endif
diff --git a/guest/android-emu/aemu/base/TypeTraits.h b/guest/android-emu/aemu/base/TypeTraits.h
index 9ab0060..fecaac0 100644
--- a/guest/android-emu/aemu/base/TypeTraits.h
+++ b/guest/android-emu/aemu/base/TypeTraits.h
@@ -17,8 +17,8 @@
 #include <iterator>
 #include <type_traits>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 namespace details {
 
diff --git a/guest/android-emu/aemu/base/containers/EntityManager.h b/guest/android-emu/aemu/base/containers/EntityManager.h
index 39541b7..860ab46 100644
--- a/guest/android-emu/aemu/base/containers/EntityManager.h
+++ b/guest/android-emu/aemu/base/containers/EntityManager.h
@@ -36,8 +36,8 @@
 #define INVALID_ENTITY_HANDLE 0
 #define INVALID_COMPONENT_HANDLE 0
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 // EntityManager: A way to represent an abstrat space of objects with handles.
 // Each handle is associated with data of type Item for quick access from handles to data.
@@ -448,7 +448,7 @@
 
     // If we didn't explicitly track, just fail.
     ComponentHandle getComponentHandle(EntityHandle h) const {
-        auto componentHandlePtr = android::base::find(mEntityToComponentMap, h);
+        auto componentHandlePtr = gfxstream::guest::find(mEntityToComponentMap, h);
         if (!componentHandlePtr) return INVALID_COMPONENT_HANDLE;
         return *componentHandlePtr;
     }
diff --git a/guest/android-emu/aemu/base/containers/HybridComponentManager.h b/guest/android-emu/aemu/base/containers/HybridComponentManager.h
index 0a242e0..f9ae1fe 100644
--- a/guest/android-emu/aemu/base/containers/HybridComponentManager.h
+++ b/guest/android-emu/aemu/base/containers/HybridComponentManager.h
@@ -18,8 +18,8 @@
 
 #include <unordered_map>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 template <size_t maxIndex,
           class IndexType, // must be castable to uint64_t
@@ -64,7 +64,7 @@
             auto internal_handle = index2Handle(index_u64);
             return mComponentManager.get(internal_handle);
         } else {
-            return android::base::find(mMap, index);
+            return gfxstream::guest::find(mMap, index);
         }
     }
 
@@ -74,7 +74,7 @@
             auto internal_handle = index2Handle(index_u64);
             return mComponentManager.get_const(internal_handle);
         } else {
-            return android::base::find(mMap, index);
+            return gfxstream::guest::find(mMap, index);
         }
     }
 
diff --git a/guest/android-emu/aemu/base/containers/Lookup.h b/guest/android-emu/aemu/base/containers/Lookup.h
index 7215c23..c720cad 100644
--- a/guest/android-emu/aemu/base/containers/Lookup.h
+++ b/guest/android-emu/aemu/base/containers/Lookup.h
@@ -32,8 +32,8 @@
 // Note: these don't work for multimaps, as there's no single value
 //  to return (and, more importantly, as those are completely useless).
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 // Helper predicates that check if the template argument is a map / set /
 // a mutlikey collection of any kind.
diff --git a/guest/android-emu/aemu/base/containers/SmallVector.h b/guest/android-emu/aemu/base/containers/SmallVector.h
index 80aa408..3b806c5 100644
--- a/guest/android-emu/aemu/base/containers/SmallVector.h
+++ b/guest/android-emu/aemu/base/containers/SmallVector.h
@@ -48,8 +48,8 @@
 // but fill free to add the ones you need.
 //
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 //
 // Forward-declare the 'real' small vector class.
diff --git a/guest/android-emu/aemu/base/files/MemStream.cpp b/guest/android-emu/aemu/base/files/MemStream.cpp
index f2b09ce..c70624f 100644
--- a/guest/android-emu/aemu/base/files/MemStream.cpp
+++ b/guest/android-emu/aemu/base/files/MemStream.cpp
@@ -20,8 +20,8 @@
 #include <utility>
 #include <cstring>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 MemStream::MemStream(int reserveSize) {
     mData.reserve(reserveSize);
diff --git a/guest/android-emu/aemu/base/files/MemStream.h b/guest/android-emu/aemu/base/files/MemStream.h
index 23780c7..51f39c9 100644
--- a/guest/android-emu/aemu/base/files/MemStream.h
+++ b/guest/android-emu/aemu/base/files/MemStream.h
@@ -19,8 +19,8 @@
 
 #include <vector>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 // An implementation of the Stream interface on top of a vector.
 class MemStream : public Stream {
diff --git a/guest/android-emu/aemu/base/files/Stream.cpp b/guest/android-emu/aemu/base/files/Stream.cpp
index 7dcb4c9..ffbb3a1 100644
--- a/guest/android-emu/aemu/base/files/Stream.cpp
+++ b/guest/android-emu/aemu/base/files/Stream.cpp
@@ -17,8 +17,8 @@
 #include <assert.h>
 #include <string.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 void Stream::putByte(uint8_t value) {
     write(&value, 1U);
diff --git a/guest/android-emu/aemu/base/files/Stream.h b/guest/android-emu/aemu/base/files/Stream.h
index a934bb9..6dad32f 100644
--- a/guest/android-emu/aemu/base/files/Stream.h
+++ b/guest/android-emu/aemu/base/files/Stream.h
@@ -19,8 +19,8 @@
 #include <inttypes.h>
 #include <sys/types.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 // Abstract interface to byte streams of all kind.
 // This is mainly used to implement disk serialization.
diff --git a/guest/android-emu/aemu/base/files/StreamSerializing.cpp b/guest/android-emu/aemu/base/files/StreamSerializing.cpp
index 92d7b2e..554b2cb 100644
--- a/guest/android-emu/aemu/base/files/StreamSerializing.cpp
+++ b/guest/android-emu/aemu/base/files/StreamSerializing.cpp
@@ -14,8 +14,8 @@
 
 #include "aemu/base/files/StreamSerializing.h"
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 void saveStream(Stream* stream, const MemStream& memStream) {
     memStream.save(stream);
diff --git a/guest/android-emu/aemu/base/files/StreamSerializing.h b/guest/android-emu/aemu/base/files/StreamSerializing.h
index 2cf7d44..4ca4c79 100644
--- a/guest/android-emu/aemu/base/files/StreamSerializing.h
+++ b/guest/android-emu/aemu/base/files/StreamSerializing.h
@@ -22,8 +22,8 @@
 #include <string>
 #include <vector>
 
-namespace android {
-namespace base {
+namespace gfxstream {
+namespace guest {
 
 //
 // Save/load operations for different types.
diff --git a/guest/android-emu/aemu/base/fit/Defer.h b/guest/android-emu/aemu/base/fit/Defer.h
index d120c32..f0be584 100644
--- a/guest/android-emu/aemu/base/fit/Defer.h
+++ b/guest/android-emu/aemu/base/fit/Defer.h
@@ -23,7 +23,7 @@
 #include "Function.h"
 #include "Nullable.h"
 
-namespace android::base {
+namespace gfxstream::guest {
 namespace fit {
 
 // A move-only deferred action wrapper with RAII semantics.
@@ -154,4 +154,4 @@
 }
 
 }  // namespace fit
-}  // namespace android::base
+}  // namespace gfxstream::guest
diff --git a/guest/android-emu/aemu/base/fit/Function.h b/guest/android-emu/aemu/base/fit/Function.h
index 4f4b17d..fe8e5ea 100644
--- a/guest/android-emu/aemu/base/fit/Function.h
+++ b/guest/android-emu/aemu/base/fit/Function.h
@@ -21,7 +21,7 @@
 #include "FunctionInternal.h"
 #include "UtilityInternal.h"
 
-namespace android::base {
+namespace gfxstream::guest {
 namespace fit {
 
 template <size_t inlineTargetSize, bool requireInline, typename Result, typename... Args>
@@ -174,28 +174,28 @@
 
 template <size_t inlineTargetSize, bool requireInline, typename Result, typename... Args>
 class FunctionImpl<inlineTargetSize, requireInline, Result(Args...)> final
-    : private ::android::base::fit::internal::
+    : private gfxstream::guest::fit::internal::
           function_base<inlineTargetSize, requireInline, Result(Args...)> {
-    using Base = ::android::base::fit::internal::
+    using Base = gfxstream::guest::fit::internal::
         function_base<inlineTargetSize, requireInline, Result(Args...)>;
 
     // function_base requires private access during share()
-    friend class ::android::base::fit::internal::
+    friend class gfxstream::guest::fit::internal::
         function_base<inlineTargetSize, requireInline, Result(Args...)>;
 
     // supports target() for shared functions
-    friend const void* ::android::base::fit::internal::get_target_type_id<>(
+    friend const void* gfxstream::guest::fit::internal::get_target_type_id<>(
         const FunctionImpl<inlineTargetSize, requireInline, Result(Args...)>&);
 
     template <typename U>
-    using NotSelfType = ::android::base::fit::internal::NotSameType<FunctionImpl, U>;
+    using NotSelfType = gfxstream::guest::fit::internal::NotSameType<FunctionImpl, U>;
 
     template <typename... Conditions>
-    using RequiresConditions = ::android::base::fit::internal::RequiresConditions<Conditions...>;
+    using RequiresConditions = gfxstream::guest::fit::internal::RequiresConditions<Conditions...>;
 
     template <typename... Conditions>
     using AssignmentRequiresConditions =
-        ::android::base::fit::internal::AssignmentRequiresConditions<FunctionImpl&, Conditions...>;
+        gfxstream::guest::fit::internal::AssignmentRequiresConditions<FunctionImpl&, Conditions...>;
 
 public:
     // The function's result type.
@@ -235,7 +235,7 @@
     // one call. To explicitly allow this, simply wrap the |fit::Callback| in a
     // pass-through lambda before passing it to the |fit::Function|.
     template <size_t otherInlineTargetSize, bool otherRequireInline>
-    FunctionImpl(::android::base::fit::CallbackImpl<otherInlineTargetSize,
+    FunctionImpl(gfxstream::guest::fit::CallbackImpl<otherInlineTargetSize,
                                                     otherRequireInline,
                                                     Result(Args...)>) = delete;
 
@@ -279,7 +279,7 @@
     // |fit::Callback| in a pass-through lambda before assigning it to the
     // |fit::Function|.
     template <size_t otherInlineTargetSize, bool otherRequireInline>
-    FunctionImpl& operator=(::android::base::fit::CallbackImpl<otherInlineTargetSize,
+    FunctionImpl& operator=(gfxstream::guest::fit::CallbackImpl<otherInlineTargetSize,
                                                                otherRequireInline,
                                                                Result(Args...)>) = delete;
 
@@ -347,28 +347,28 @@
 
 template <size_t inlineTargetSize, bool requireInline, typename Result, typename... Args>
 class CallbackImpl<inlineTargetSize, requireInline, Result(Args...)> final
-    : private ::android::base::fit::internal::
+    : private gfxstream::guest::fit::internal::
           function_base<inlineTargetSize, requireInline, Result(Args...)> {
-    using Base = ::android::base::fit::internal::
+    using Base = gfxstream::guest::fit::internal::
         function_base<inlineTargetSize, requireInline, Result(Args...)>;
 
     // function_base requires private access during share()
-    friend class ::android::base::fit::internal::
+    friend class gfxstream::guest::fit::internal::
         function_base<inlineTargetSize, requireInline, Result(Args...)>;
 
     // supports target() for shared functions
-    friend const void* ::android::base::fit::internal::get_target_type_id<>(
+    friend const void* gfxstream::guest::fit::internal::get_target_type_id<>(
         const CallbackImpl<inlineTargetSize, requireInline, Result(Args...)>&);
 
     template <typename U>
-    using NotSelfType = ::android::base::fit::internal::NotSameType<CallbackImpl, U>;
+    using NotSelfType = gfxstream::guest::fit::internal::NotSameType<CallbackImpl, U>;
 
     template <typename... Conditions>
-    using RequiresConditions = ::android::base::fit::internal::RequiresConditions<Conditions...>;
+    using RequiresConditions = gfxstream::guest::fit::internal::RequiresConditions<Conditions...>;
 
     template <typename... Conditions>
     using AssignmentRequiresConditions =
-        ::android::base::fit::internal::AssignmentRequiresConditions<CallbackImpl&, Conditions...>;
+        gfxstream::guest::fit::internal::AssignmentRequiresConditions<CallbackImpl&, Conditions...>;
 
 public:
     // The callback function's result type.
@@ -510,4 +510,4 @@
 }
 
 }  // namespace fit
-}  // namespace android::base
+}  // namespace gfxstream::guest
diff --git a/guest/android-emu/aemu/base/fit/FunctionInternal.h b/guest/android-emu/aemu/base/fit/FunctionInternal.h
index 3fb1ac5..fbfae60 100644
--- a/guest/android-emu/aemu/base/fit/FunctionInternal.h
+++ b/guest/android-emu/aemu/base/fit/FunctionInternal.h
@@ -29,7 +29,7 @@
 #include <type_traits>
 #include <utility>
 
-namespace android::base {
+namespace gfxstream::guest {
 namespace fit {
 namespace internal {
 
@@ -189,7 +189,7 @@
     }
     static const void* target_type_id(void* bits, const void* impl_ops) {
         auto& function_or_callback = **static_cast<std::shared_ptr<SharedFunction>*>(bits);
-        return ::android::base::fit::internal::get_target_type_id(function_or_callback);
+        return gfxstream::guest::fit::internal::get_target_type_id(function_or_callback);
     }
     static void* get(void* bits) {
         auto& function_or_callback = **static_cast<std::shared_ptr<SharedFunction>*>(bits);
@@ -453,4 +453,4 @@
 }  // namespace internal
 
 }  // namespace fit
-}  // namespace android::base
+}  // namespace gfxstream::guest
diff --git a/guest/android-emu/aemu/base/fit/Nullable.h b/guest/android-emu/aemu/base/fit/Nullable.h
index e05021b..02b3337 100644
--- a/guest/android-emu/aemu/base/fit/Nullable.h
+++ b/guest/android-emu/aemu/base/fit/Nullable.h
@@ -24,7 +24,7 @@
 #include <type_traits>
 #include <utility>
 
-namespace android::base {
+namespace gfxstream::guest {
 namespace fit {
 
 // Determines whether a type can be compared with nullptr.
@@ -262,4 +262,4 @@
 }
 
 }  // namespace fit
-}  // namespace android::base
+}  // namespace gfxstream::guest
diff --git a/guest/android-emu/aemu/base/fit/ThreadChecker.h b/guest/android-emu/aemu/base/fit/ThreadChecker.h
index 3859ecf..43d8e5c 100644
--- a/guest/android-emu/aemu/base/fit/ThreadChecker.h
+++ b/guest/android-emu/aemu/base/fit/ThreadChecker.h
@@ -27,7 +27,7 @@
 
 #include "ThreadSafety.h"
 
-namespace android::base {
+namespace gfxstream::guest {
 namespace fit {
 
 // A simple class that records the identity of the thread that it was created
@@ -76,7 +76,7 @@
 };
 
 #ifndef NDEBUG
-#define DECLARE_THREAD_CHECKER(c) android::base::fit::ThreadChecker c
+#define DECLARE_THREAD_CHECKER(c) gfxstream::guest::fit::ThreadChecker c
 #define DCHECK_IS_THREAD_VALID(c) assert((c).isThreadValid())
 #else
 #define DECLARE_THREAD_CHECKER(c)
@@ -84,4 +84,4 @@
 #endif
 
 }  // namespace fit
-}  // namespace android::base
+}  // namespace gfxstream::guest
diff --git a/guest/android-emu/aemu/base/fit/UtilityInternal.h b/guest/android-emu/aemu/base/fit/UtilityInternal.h
index 274105e..73a9d7d 100644
--- a/guest/android-emu/aemu/base/fit/UtilityInternal.h
+++ b/guest/android-emu/aemu/base/fit/UtilityInternal.h
@@ -21,7 +21,7 @@
 #include <type_traits>
 #include <utility>
 
-namespace android::base {
+namespace gfxstream::guest {
 namespace fit {
 namespace internal {
 
@@ -143,4 +143,4 @@
 
 }  // namespace internal
 }  // namespace fit
-}  // namespace android::base
+}  // namespace gfxstream::guest
diff --git a/guest/android-emu/aemu/base/synchronization/AndroidConditionVariable.h b/guest/android-emu/aemu/base/synchronization/AndroidConditionVariable.h
index f389098..63a0f9e 100644
--- a/guest/android-emu/aemu/base/synchronization/AndroidConditionVariable.h
+++ b/guest/android-emu/aemu/base/synchronization/AndroidConditionVariable.h
@@ -26,8 +26,7 @@
 #include <stdint.h>
 #include <assert.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 // A class that implements a condition variable, which can be used in
@@ -229,6 +228,5 @@
 }
 #endif  // !_WIN32
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/synchronization/AndroidLock.h b/guest/android-emu/aemu/base/synchronization/AndroidLock.h
index e1f39ab..503cb98 100644
--- a/guest/android-emu/aemu/base/synchronization/AndroidLock.h
+++ b/guest/android-emu/aemu/base/synchronization/AndroidLock.h
@@ -33,8 +33,7 @@
 #define AEMU_IF_DEBUG(x)
 #endif
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 template <class Lockable>
@@ -52,7 +51,7 @@
 template <>
 class StaticLock<false> {
 public:
-    using AutoLock = android::base::guest::AutoLock<StaticLock>;
+    using AutoLock = gfxstream::guest::AutoLock<StaticLock>;
 
     constexpr StaticLock() = default;
 
@@ -109,7 +108,7 @@
 template <>
 class StaticLock<true> {
 public:
-    using AutoLock = android::base::guest::AutoLock<StaticLock>;
+    using AutoLock = gfxstream::guest::AutoLock<StaticLock>;
 
     StaticLock() {
 #ifdef _WIN32
@@ -201,8 +200,8 @@
 
 class ReadWriteLock {
 public:
-    using AutoWriteLock = android::base::guest::AutoWriteLock;
-    using AutoReadLock = android::base::guest::AutoReadLock;
+    using AutoWriteLock = gfxstream::guest::AutoWriteLock;
+    using AutoReadLock = gfxstream::guest::AutoReadLock;
 
 #ifdef _WIN32
     constexpr ReadWriteLock() = default;
@@ -329,6 +328,5 @@
     DISALLOW_COPY_ASSIGN_AND_MOVE(AutoReadLock);
 };
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/synchronization/AndroidMessageChannel.cpp b/guest/android-emu/aemu/base/synchronization/AndroidMessageChannel.cpp
index 162a730..9d69935 100644
--- a/guest/android-emu/aemu/base/synchronization/AndroidMessageChannel.cpp
+++ b/guest/android-emu/aemu/base/synchronization/AndroidMessageChannel.cpp
@@ -14,8 +14,7 @@
 
 #include "aemu/base/synchronization/AndroidMessageChannel.h"
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 MessageChannelBase::MessageChannelBase(size_t capacity) : mCapacity(capacity) {}
@@ -26,7 +25,7 @@
 }
 
 void MessageChannelBase::stop() {
-    android::base::guest::AutoLock<Lock> lock(mLock);
+    gfxstream::guest::AutoLock<Lock> lock(mLock);
     mStopped = true;
     mCount = 0;
     mCanRead.broadcast();
@@ -117,6 +116,5 @@
     mCanWrite.signalAndUnlock(&mLock);
 }
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/synchronization/AndroidMessageChannel.h b/guest/android-emu/aemu/base/synchronization/AndroidMessageChannel.h
index 9b93d4d..528f895 100644
--- a/guest/android-emu/aemu/base/synchronization/AndroidMessageChannel.h
+++ b/guest/android-emu/aemu/base/synchronization/AndroidMessageChannel.h
@@ -21,8 +21,7 @@
 #include <utility>
 #include <stddef.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 // Base non-templated class used to reduce the amount of template
@@ -205,6 +204,5 @@
     T mItems[CAPACITY];
 };
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/threads/AndroidFunctorThread.cpp b/guest/android-emu/aemu/base/threads/AndroidFunctorThread.cpp
index 80829d2..80f4d7a 100644
--- a/guest/android-emu/aemu/base/threads/AndroidFunctorThread.cpp
+++ b/guest/android-emu/aemu/base/threads/AndroidFunctorThread.cpp
@@ -16,8 +16,7 @@
 
 #include <assert.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 FunctorThread::FunctorThread(Functor&& func, ThreadFlags flags)
@@ -30,6 +29,5 @@
     return mThreadFunc();
 }
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/threads/AndroidFunctorThread.h b/guest/android-emu/aemu/base/threads/AndroidFunctorThread.h
index 9363b75..2f06cc3 100644
--- a/guest/android-emu/aemu/base/threads/AndroidFunctorThread.h
+++ b/guest/android-emu/aemu/base/threads/AndroidFunctorThread.h
@@ -25,13 +25,12 @@
 // convenience class so one doesn't need to create a separate class if the only
 // needed thing is to run a specific existing function in a thread.
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
-class FunctorThread : public android::base::guest::Thread {
+class FunctorThread : public gfxstream::guest::Thread {
 public:
-    using Functor = android::base::guest::ThreadFunctor;
+    using Functor = gfxstream::guest::ThreadFunctor;
 
     explicit FunctorThread(const Functor& func,
                            ThreadFlags flags = ThreadFlags::MaskSignals)
@@ -55,6 +54,5 @@
     Functor mThreadFunc;
 };
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/threads/AndroidThread.h b/guest/android-emu/aemu/base/threads/AndroidThread.h
index 5546fd4..60a95bb 100644
--- a/guest/android-emu/aemu/base/threads/AndroidThread.h
+++ b/guest/android-emu/aemu/base/threads/AndroidThread.h
@@ -26,8 +26,7 @@
 
 #include <inttypes.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 // Wrapper class for platform-specific threads.
@@ -145,6 +144,5 @@
     virtual void interrupt() = 0;
 };
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/threads/AndroidThreadStore.cpp b/guest/android-emu/aemu/base/threads/AndroidThreadStore.cpp
index cb8a100..f3e1ec3 100644
--- a/guest/android-emu/aemu/base/threads/AndroidThreadStore.cpp
+++ b/guest/android-emu/aemu/base/threads/AndroidThreadStore.cpp
@@ -32,8 +32,7 @@
 #  define D(...)   ((void)0)
 #endif
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 #ifdef _WIN32
@@ -243,6 +242,5 @@
 
 #endif  // !_WIN32
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/threads/AndroidThreadStore.h b/guest/android-emu/aemu/base/threads/AndroidThreadStore.h
index 147c313..2f505ff 100644
--- a/guest/android-emu/aemu/base/threads/AndroidThreadStore.h
+++ b/guest/android-emu/aemu/base/threads/AndroidThreadStore.h
@@ -23,8 +23,7 @@
 #  include <pthread.h>
 #endif
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 // A class to model storage of thread-specific values, that can be
@@ -117,7 +116,7 @@
 
 // ThreadStore is a template class used to implement a thread-local store
 // of objects of type |T|. Note that the store owns the objects, and these
-// are destroyed when an android::base::Thread exits.
+// are destroyed when a gfxstream::guest::Thread exits.
 template <typename T>
 class ThreadStore : public ThreadStoreBase {
 public:
@@ -151,6 +150,5 @@
     }
 };
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/threads/AndroidThreadTypes.h b/guest/android-emu/aemu/base/threads/AndroidThreadTypes.h
index 890c045..318d25f 100644
--- a/guest/android-emu/aemu/base/threads/AndroidThreadTypes.h
+++ b/guest/android-emu/aemu/base/threads/AndroidThreadTypes.h
@@ -19,8 +19,7 @@
 #include <functional>
 #include <stdint.h>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 // a functor which can run in a separate thread
@@ -36,6 +35,5 @@
     Detach = 1 << 1
 };
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/threads/AndroidThread_pthread.cpp b/guest/android-emu/aemu/base/threads/AndroidThread_pthread.cpp
index 9d1bfc6..f7e229e 100644
--- a/guest/android-emu/aemu/base/threads/AndroidThread_pthread.cpp
+++ b/guest/android-emu/aemu/base/threads/AndroidThread_pthread.cpp
@@ -33,8 +33,7 @@
 #include <zircon/process.h>
 #endif
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 Thread::Thread(ThreadFlags flags, int stackSize)
@@ -158,7 +157,7 @@
         // |self| is not valid beyond this point
     }
 
-    ::android::base::guest::ThreadStoreBase::OnThreadExit();
+    gfxstream::guest::ThreadStoreBase::OnThreadExit();
 
     // This return value is ignored.
     return NULL;
@@ -211,6 +210,5 @@
     return static_cast<unsigned long>(tid);
 }
 
-}  // namespace guest
-}  // namespace base
-}  // namespace android
+} // namespace guest
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/threads/AndroidWorkPool.cpp b/guest/android-emu/aemu/base/threads/AndroidWorkPool.cpp
index cb3565e..ed45ffb 100644
--- a/guest/android-emu/aemu/base/threads/AndroidWorkPool.cpp
+++ b/guest/android-emu/aemu/base/threads/AndroidWorkPool.cpp
@@ -24,14 +24,13 @@
 #include <unordered_map>
 #include <sys/time.h>
 
-using android::base::guest::AutoLock;
-using android::base::guest::ConditionVariable;
-using android::base::guest::FunctorThread;
-using android::base::guest::Lock;
-using android::base::guest::MessageChannel;
+using gfxstream::guest::AutoLock;
+using gfxstream::guest::ConditionVariable;
+using gfxstream::guest::FunctorThread;
+using gfxstream::guest::Lock;
+using gfxstream::guest::MessageChannel;
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 class WaitGroup { // intrusive refcounted
@@ -43,7 +42,7 @@
 
     ~WaitGroup() = default;
 
-    android::base::guest::Lock& getLock() { return mLock; }
+    gfxstream::guest::Lock& getLock() { return mLock; }
 
     void acquire() {
         if (0 == mRefCount.fetch_add(1, std::memory_order_seq_cst)) {
@@ -134,7 +133,7 @@
             if (!conditionFunc()) {
                 // Decrement timeout for wakeups
                 uint64_t nextTime = currTimeUs();
-                WorkPool::TimeoutUs waited = 
+                WorkPool::TimeoutUs waited =
                     nextTime - currTime;
                 currTime = nextTime;
 
@@ -465,5 +464,4 @@
 }
 
 } // namespace guest
-} // namespace base
-} // namespace android
+} // namespace gfxstream
diff --git a/guest/android-emu/aemu/base/threads/AndroidWorkPool.h b/guest/android-emu/aemu/base/threads/AndroidWorkPool.h
index 5ffaecb..3aede31 100644
--- a/guest/android-emu/aemu/base/threads/AndroidWorkPool.h
+++ b/guest/android-emu/aemu/base/threads/AndroidWorkPool.h
@@ -19,8 +19,7 @@
 #include <memory>
 #include <vector>
 
-namespace android {
-namespace base {
+namespace gfxstream {
 namespace guest {
 
 // WorkPool provides a way to queue several different + arbitrary wait / signal
@@ -46,6 +45,5 @@
     std::unique_ptr<Impl> mImpl;
 };
 
-} // namespace android
-} // namespace base
 } // namespace guest
+} // namespace gfxstream
diff --git a/guest/egl/egl.cpp b/guest/egl/egl.cpp
index ad9ef1f..013848c 100644
--- a/guest/egl/egl.cpp
+++ b/guest/egl/egl.cpp
@@ -63,7 +63,7 @@
 #include <cutils/trace.h>
 
 
-using android::base::guest::getCurrentThreadId;
+using gfxstream::guest::getCurrentThreadId;
 
 #define DEBUG_EGL 0
 
@@ -741,17 +741,17 @@
     void onSwapBuffersSuccesful(ExtendedRCEncoderContext* rcEnc) {
 #ifdef GFXSTREAM
         // edge trigger
-        if (android::base::isTracingEnabled() && !tracingEnabled) {
+        if (gfxstream::guest::isTracingEnabled() && !tracingEnabled) {
             if (rcEnc->hasHostSideTracing()) {
                 rcEnc->rcSetTracingForPuid(rcEnc, getPuid(), 1, currGuestTimeNs());
             }
         }
-        if (!android::base::isTracingEnabled() && tracingEnabled) {
+        if (!gfxstream::guest::isTracingEnabled() && tracingEnabled) {
             if (rcEnc->hasHostSideTracing()) {
                 rcEnc->rcSetTracingForPuid(rcEnc, getPuid(), 0, currGuestTimeNs());
             }
         }
-        tracingEnabled = android::base::isTracingEnabled();
+        tracingEnabled = gfxstream::guest::isTracingEnabled();
 #endif
         ++frameNumber;
     }
diff --git a/guest/egl/eglDisplay.cpp b/guest/egl/eglDisplay.cpp
index f5ee972..ac4608d 100644
--- a/guest/egl/eglDisplay.cpp
+++ b/guest/egl/eglDisplay.cpp
@@ -280,9 +280,9 @@
 {
 #ifdef HOST_BUILD
     std::string baseDir =
-        android::base::System::get()->getProgramDirectory();
+        gfxstream::guest::System::get()->getProgramDirectory();
     std::string path =
-        android::base::pj({
+        gfxstream::guest::pj({
             baseDir, "lib64", std::string(basename) + LIBSUFFIX});
     void *lib = dlopen(path.c_str(), RTLD_NOW);
 #else
diff --git a/guest/egl/eglDisplay.h b/guest/egl/eglDisplay.h
index 1e5d5c2..357761c 100644
--- a/guest/egl/eglDisplay.h
+++ b/guest/egl/eglDisplay.h
@@ -34,7 +34,7 @@
 
 #define ATTRIBUTE_NONE (-1)
 //FIXME: are we in this namespace?
-using namespace android;
+using namespace gfxstream::guest;
 
 class eglDisplay
 {
diff --git a/guest/platform/include/VirtGpu.h b/guest/platform/include/VirtGpu.h
index 4c9cb87..a1166b5 100644
--- a/guest/platform/include/VirtGpu.h
+++ b/guest/platform/include/VirtGpu.h
@@ -157,7 +157,7 @@
 
 }  // namespace platform_internal
 
-// HACK: We can use android::base::EnumFlags, but we'll have to do more guest
+// HACK: We can use gfxstream::guest::EnumFlags, but we'll have to do more guest
 // refactorings to figure out our end goal.  We can either depend more on base or
 // try to transition to something else (b:202552093) [atleast for guests].
 constexpr enum VirtGpuBlobFlags operator |(const enum VirtGpuBlobFlags self,
diff --git a/guest/vulkan_enc/HostVisibleMemoryVirtualization.cpp b/guest/vulkan_enc/HostVisibleMemoryVirtualization.cpp
index 5f3b23a..a2ca85f 100644
--- a/guest/vulkan_enc/HostVisibleMemoryVirtualization.cpp
+++ b/guest/vulkan_enc/HostVisibleMemoryVirtualization.cpp
@@ -24,7 +24,7 @@
 #include "VkEncoder.h"
 #include "aemu/base/AndroidSubAllocator.h"
 
-using android::base::guest::SubAllocator;
+using gfxstream::guest::SubAllocator;
 
 namespace gfxstream {
 namespace vk {
@@ -37,7 +37,7 @@
                                VkDeviceMemory memory)
     : mSize(size), mBlobMapping(blobMapping), mDevice(device), mMemory(memory) {
     mAllocator =
-        std::make_unique<android::base::guest::SubAllocator>(blobMapping->asRawPtr(), mSize, 4096);
+        std::make_unique<gfxstream::guest::SubAllocator>(blobMapping->asRawPtr(), mSize, 4096);
 }
 
 CoherentMemory::CoherentMemory(GoldfishAddressSpaceBlockPtr block, uint64_t gpuAddr, uint64_t size,
@@ -45,7 +45,7 @@
     : mSize(size), mBlock(block), mDevice(device), mMemory(memory) {
     void* address = block->mmap(gpuAddr);
     mAllocator =
-        std::make_unique<android::base::guest::SubAllocator>(address, mSize, kLargestPageSize);
+        std::make_unique<gfxstream::guest::SubAllocator>(address, mSize, kLargestPageSize);
 }
 
 CoherentMemory::~CoherentMemory() {
diff --git a/guest/vulkan_enc/HostVisibleMemoryVirtualization.h b/guest/vulkan_enc/HostVisibleMemoryVirtualization.h
index bd62386..7ab9c8b 100644
--- a/guest/vulkan_enc/HostVisibleMemoryVirtualization.h
+++ b/guest/vulkan_enc/HostVisibleMemoryVirtualization.h
@@ -37,7 +37,7 @@
 bool isHostVisible(const VkPhysicalDeviceMemoryProperties* memoryProps, uint32_t index);
 
 using GoldfishAddressSpaceBlockPtr = std::shared_ptr<GoldfishAddressSpaceBlock>;
-using SubAllocatorPtr = std::unique_ptr<android::base::guest::SubAllocator>;
+using SubAllocatorPtr = std::unique_ptr<gfxstream::guest::SubAllocator>;
 
 class CoherentMemory {
    public:
diff --git a/guest/vulkan_enc/ResourceTracker.cpp b/guest/vulkan_enc/ResourceTracker.cpp
index 0e53eba..46db16f 100644
--- a/guest/vulkan_enc/ResourceTracker.cpp
+++ b/guest/vulkan_enc/ResourceTracker.cpp
@@ -135,11 +135,11 @@
 #endif
 #endif
 
-using android::base::Optional;
-using android::base::guest::AutoLock;
-using android::base::guest::RecursiveLock;
-using android::base::guest::Lock;
-using android::base::guest::WorkPool;
+using gfxstream::guest::Optional;
+using gfxstream::guest::AutoLock;
+using gfxstream::guest::RecursiveLock;
+using gfxstream::guest::Lock;
+using gfxstream::guest::WorkPool;
 
 namespace gfxstream {
 namespace vk {
@@ -408,10 +408,10 @@
 
     struct VkBufferCollectionFUCHSIA_Info {
 #ifdef VK_USE_PLATFORM_FUCHSIA
-        android::base::Optional<
+        gfxstream::guest::Optional<
             fuchsia_sysmem::wire::BufferCollectionConstraints>
             constraints;
-        android::base::Optional<VkBufferCollectionPropertiesFUCHSIA> properties;
+        gfxstream::guest::Optional<VkBufferCollectionPropertiesFUCHSIA> properties;
 
         // the index of corresponding createInfo for each image format
         // constraints in |constraints|.
@@ -2566,7 +2566,7 @@
         if (info_VkBufferCollectionFUCHSIA.find(buffer_collection) !=
             info_VkBufferCollectionFUCHSIA.end()) {
             info_VkBufferCollectionFUCHSIA[buffer_collection].constraints =
-                android::base::makeOptional(
+                gfxstream::guest::makeOptional(
                     std::move(setConstraintsResult.constraints));
             info_VkBufferCollectionFUCHSIA[buffer_collection].createInfoIndex =
                 std::move(setConstraintsResult.createInfoIndex);
@@ -2632,7 +2632,7 @@
         if (info_VkBufferCollectionFUCHSIA.find(buffer_collection) !=
             info_VkBufferCollectionFUCHSIA.end()) {
             info_VkBufferCollectionFUCHSIA[buffer_collection].constraints =
-                android::base::makeOptional(setConstraintsResult.constraints);
+                gfxstream::guest::makeOptional(setConstraintsResult.constraints);
         }
 
         return VK_SUCCESS;
@@ -2806,7 +2806,7 @@
             }
 
             info_VkBufferCollectionFUCHSIA[collection].properties =
-                android::base::makeOptional(*pProperties);
+                gfxstream::guest::makeOptional(*pProperties);
 
             // We only do a shallow copy so we should remove all pNext pointers.
             info_VkBufferCollectionFUCHSIA[collection].properties->pNext =
@@ -5281,7 +5281,7 @@
             if (result.ok() && result->status == ZX_OK) {
                 auto& info = result->buffer_collection_info;
                 if (index < info.buffer_count) {
-                    vmo = android::base::makeOptional(
+                    vmo = gfxstream::guest::makeOptional(
                             std::move(info.buffers[index].vmo));
                 }
             } else {
diff --git a/guest/vulkan_enc/VkEncoder.cpp b/guest/vulkan_enc/VkEncoder.cpp
index 79fffcc..fb04822 100644
--- a/guest/vulkan_enc/VkEncoder.cpp
+++ b/guest/vulkan_enc/VkEncoder.cpp
@@ -60,9 +60,9 @@
 
 using namespace gfxstream::vk;
 
-using android::base::BumpPool;
-using android::base::guest::AutoLock;
-using android::base::guest::Lock;
+using gfxstream::guest::AutoLock;
+using gfxstream::guest::BumpPool;
+using gfxstream::guest::Lock;
 
 #include "VkEncoder.cpp.inl"
 
diff --git a/guest/vulkan_enc/VkEncoder.cpp.inl b/guest/vulkan_enc/VkEncoder.cpp.inl
index 97bc869..646e6b0 100644
--- a/guest/vulkan_enc/VkEncoder.cpp.inl
+++ b/guest/vulkan_enc/VkEncoder.cpp.inl
@@ -60,7 +60,7 @@
     VkEncoder* mEnc;
 };
 
-VkEncoder::VkEncoder(IOStream* stream, android::base::guest::HealthMonitor<>* healthMonitor)
+VkEncoder::VkEncoder(IOStream* stream, gfxstream::guest::HealthMonitor<>* healthMonitor)
     : mImpl(new VkEncoder::Impl(stream)), mHealthMonitor(healthMonitor) {}
 
 void VkEncoder::flush() { mImpl->flush(); }
diff --git a/guest/vulkan_enc/VkEncoder.h b/guest/vulkan_enc/VkEncoder.h
index 7ddc213..969e588 100644
--- a/guest/vulkan_enc/VkEncoder.h
+++ b/guest/vulkan_enc/VkEncoder.h
@@ -44,7 +44,7 @@
 namespace gfxstream {
 namespace vk {
 
-using android::base::guest::HealthMonitor;
+using gfxstream::guest::HealthMonitor;
 
 class VkEncoder {
    public:
diff --git a/guest/vulkan_enc/VulkanStreamGuest.cpp b/guest/vulkan_enc/VulkanStreamGuest.cpp
index 3c11670..921f0d4 100644
--- a/guest/vulkan_enc/VulkanStreamGuest.cpp
+++ b/guest/vulkan_enc/VulkanStreamGuest.cpp
@@ -67,7 +67,7 @@
     uint32_t len;
     memcpy(&len, *streamPtr, sizeof(uint32_t));
     *streamPtr += sizeof(uint32_t);
-    android::base::Stream::fromBe32((uint8_t*)&len);
+    gfxstream::guest::Stream::fromBe32((uint8_t*)&len);
 
     alloc((void**)forOutput, len + 1);
 
@@ -83,7 +83,7 @@
  uint32_t count;
     memcpy(&count, *streamPtr, sizeof(uint32_t));
     *streamPtr += sizeof(uint32_t);
-    android::base::Stream::fromBe32((uint8_t*)&count);
+    gfxstream::guest::Stream::fromBe32((uint8_t*)&count);
     if (!count) {
         *forOutput = nullptr;
         return;
diff --git a/guest/vulkan_enc/VulkanStreamGuest.h b/guest/vulkan_enc/VulkanStreamGuest.h
index 48c5a61..89c4e0d 100644
--- a/guest/vulkan_enc/VulkanStreamGuest.h
+++ b/guest/vulkan_enc/VulkanStreamGuest.h
@@ -37,7 +37,7 @@
 namespace gfxstream {
 namespace vk {
 
-class VulkanStreamGuest : public android::base::Stream {
+class VulkanStreamGuest : public gfxstream::guest::Stream {
 public:
     VulkanStreamGuest(IOStream* stream);
     ~VulkanStreamGuest();
@@ -78,7 +78,7 @@
 
     uint8_t* reserve(size_t size);
 private:
-    android::base::BumpPool mPool;
+    gfxstream::guest::BumpPool mPool;
     std::vector<uint8_t> mWriteBuffer;
     IOStream* mStream = nullptr;
     DefaultHandleMapping mDefaultHandleMapping;
