You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zg...@apache.org on 2019/03/12 12:46:56 UTC

[hbase] 128/133: HBASE-18725 [C++] Install header files as well as library

This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch HBASE-14850
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit d46701f4af1b29fd203deb659dff9909090ae1d0
Author: Enis Soztutar <en...@apache.org>
AuthorDate: Mon Sep 11 18:36:11 2017 -0700

    HBASE-18725 [C++] Install header files as well as library
---
 hbase-native-client/.gitignore                     |   2 +-
 hbase-native-client/Makefile                       |  54 +++++---
 hbase-native-client/Makefile.protos                |  14 +-
 hbase-native-client/bin/copy-protobuf.sh           |   2 +-
 hbase-native-client/bin/copy-version.sh            |   2 +-
 hbase-native-client/bin/cpplint.sh                 |  11 +-
 hbase-native-client/bin/format-code.sh             |   9 +-
 hbase-native-client/include/hbase/client/BUCK      |  93 +++++++++++++
 .../{core => include/hbase/client}/action.h        |   2 +-
 .../{core => include/hbase/client}/append.h        |   4 +-
 .../client}/async-batch-rpc-retrying-caller.h      |  40 +++---
 .../hbase/client}/async-client-scanner.h           |  36 ++---
 .../hbase/client}/async-connection.h               |  20 +--
 .../hbase/client}/async-region-locator.h           |  10 +-
 .../client}/async-rpc-retrying-caller-factory.h    |  24 ++--
 .../hbase/client}/async-rpc-retrying-caller.h      |  10 +-
 .../hbase/client}/async-scan-rpc-retrying-caller.h |  36 ++---
 .../hbase/client}/async-table-result-scanner.h     |  10 +-
 .../{core => include/hbase/client}/cell.h          |   0
 .../{core => include/hbase/client}/client.h        |  10 +-
 .../{core => include/hbase/client}/configuration.h |   0
 .../hbase/client}/connection-configuration.h       |   2 +-
 .../{core => include/hbase/client}/delete.h        |   4 +-
 .../{core => include/hbase/client}/filter.h        |   6 +-
 .../{core => include/hbase/client}/get.h           |   8 +-
 .../hbase/client}/hbase-configuration-loader.h     |   4 +-
 .../hbase/client}/hbase-rpc-controller.h           |   0
 .../{core => include/hbase/client}/increment.h     |   4 +-
 .../hbase/client}/keyvalue-codec.h                 |   4 +-
 .../hbase/client}/location-cache.h                 |  14 +-
 .../{core => include/hbase/client}/meta-utils.h    |  10 +-
 .../hbase/client}/multi-response.h                 |   6 +-
 .../{core => include/hbase/client}/mutation.h      |   6 +-
 .../{core => include/hbase/client}/put.h           |   4 +-
 .../{core => include/hbase/client}/query.h         |   2 +-
 .../hbase/client}/raw-async-table.h                |  23 ++--
 .../hbase/client}/raw-scan-result-consumer.h       |   6 +-
 .../hbase/client}/region-location.h                |   2 +-
 .../hbase/client}/region-request.h                 |   4 +-
 .../{core => include/hbase/client}/region-result.h |   4 +-
 .../hbase/client}/request-converter.h              |  28 ++--
 .../hbase/client}/response-converter.h             |  14 +-
 .../hbase/client}/result-scanner.h                 |   4 +-
 .../{core => include/hbase/client}/result.h        |   4 +-
 .../{core => include/hbase/client}/row.h           |   0
 .../hbase/client}/scan-result-cache.h              |   6 +-
 .../{core => include/hbase/client}/scan.h          |   6 +-
 .../hbase/client}/server-request.h                 |   6 +-
 .../{core => include/hbase/client}/table.h         |  22 +--
 .../{core => include/hbase/client}/time-range.h    |   0
 .../{core => include/hbase/client}/zk-util.h       |   2 +-
 .../{ => include/hbase}/connection/BUCK            |  45 ++-----
 .../hbase}/connection/client-dispatcher.h          |   8 +-
 .../hbase}/connection/client-handler.h             |  10 +-
 .../hbase}/connection/connection-factory.h         |  10 +-
 .../{ => include/hbase}/connection/connection-id.h |   4 +-
 .../hbase}/connection/connection-pool.h            |  10 +-
 .../{ => include/hbase}/connection/pipeline.h      |  10 +-
 .../{ => include/hbase}/connection/request.h       |   0
 .../{ => include/hbase}/connection/response.h      |   2 +-
 .../{ => include/hbase}/connection/rpc-client.h    |  10 +-
 .../hbase}/connection/rpc-connection.h             |  10 +-
 .../hbase}/connection/rpc-fault-injector-inl.h     |   0
 .../hbase}/connection/rpc-fault-injector.h         |   4 +-
 .../hbase}/connection/rpc-test-server-handler.h    |   6 +-
 .../hbase}/connection/rpc-test-server.h            |   6 +-
 .../{ => include/hbase}/connection/sasl-handler.h  |   8 +-
 .../{ => include/hbase}/connection/sasl-util.h     |   2 +-
 .../{ => include/hbase}/connection/service.h       |   4 +-
 .../{ => include/hbase}/exceptions/BUCK            |  15 +--
 .../{ => include/hbase}/exceptions/exception.h     |   0
 .../{ => include/hbase}/security/BUCK              |   4 +-
 .../{ => include/hbase}/security/user.h            |   2 +-
 .../{security => include/hbase/serde}/BUCK         |  19 ++-
 .../{ => include/hbase}/serde/cell-outputstream.h  |   0
 .../{ => include/hbase}/serde/cell-scanner.h       |   0
 .../{ => include/hbase}/serde/codec.h              |   4 +-
 .../{ => include/hbase}/serde/region-info.h        |   2 +-
 .../{ => include/hbase}/serde/rpc-serde.h          |   6 +-
 .../{ => include/hbase}/serde/server-name.h        |   2 +-
 .../{ => include/hbase}/serde/table-name.h         |   2 +-
 hbase-native-client/{ => include/hbase}/serde/zk.h |   0
 hbase-native-client/{ => include/hbase}/utils/BUCK |  26 +---
 .../{ => include/hbase}/utils/bytes-util.h         |   0
 .../{ => include/hbase}/utils/concurrent-map.h     |   0
 .../{ => include/hbase}/utils/connection-util.h    |   2 +-
 .../{ => include/hbase}/utils/optional.h           |   0
 .../{ => include/hbase}/utils/sys-util.h           |   0
 .../{ => include/hbase}/utils/time-util.h          |   0
 .../{ => include/hbase}/utils/user-util.h          |   0
 .../{core => src/hbase/client}/BUCK                | 149 +++++++--------------
 .../{core => src/hbase/client}/append-test.cc      |   6 +-
 .../{core => src/hbase/client}/append.cc           |   2 +-
 .../client}/async-batch-rpc-retrying-caller.cc     |   2 +-
 .../hbase/client}/async-batch-rpc-retrying-test.cc |  24 ++--
 .../hbase/client}/async-client-scanner.cc          |   2 +-
 .../{core => src/hbase/client}/async-connection.cc |   4 +-
 .../client}/async-rpc-retrying-caller-factory.cc   |   2 +-
 .../hbase/client}/async-rpc-retrying-caller.cc     |  22 +--
 .../hbase/client}/async-rpc-retrying-test.cc       |  38 +++---
 .../client}/async-scan-rpc-retrying-caller.cc      |   2 +-
 .../hbase/client}/async-table-result-scanner.cc    |   2 +-
 .../{core => src/hbase/client}/cell-test.cc        |   2 +-
 .../{core => src/hbase/client}/cell.cc             |   4 +-
 .../{core => src/hbase/client}/client-test.cc      |  30 ++---
 .../{core => src/hbase/client}/client.cc           |   2 +-
 .../hbase/client}/configuration-test.cc            |   2 +-
 .../{core => src/hbase/client}/configuration.cc    |   2 +-
 .../{core => src/hbase/client}/delete-test.cc      |   6 +-
 .../{core => src/hbase/client}/delete.cc           |   2 +-
 .../{core => src/hbase/client}/filter-test.cc      |  20 +--
 .../{core => src/hbase/client}/get-test.cc         |   4 +-
 .../{core => src/hbase/client}/get.cc              |   2 +-
 .../hbase/client}/hbase-configuration-loader.cc    |   2 +-
 .../hbase/client}/hbase-configuration-test.cc      |   4 +-
 .../hbase/client}/hbase-rpc-controller.cc          |   2 +-
 .../{core => src/hbase/client}/increment-test.cc   |   8 +-
 .../{core => src/hbase/client}/increment.cc        |   4 +-
 .../{core => src/hbase/client}/keyvalue-codec.cc   |   2 +-
 .../{core => src/hbase/client}/load-client.cc      |  12 +-
 .../hbase/client}/location-cache-retry-test.cc     |  32 ++---
 .../hbase/client}/location-cache-test.cc           |  10 +-
 .../{core => src/hbase/client}/location-cache.cc   |  20 +--
 .../{core => src/hbase/client}/meta-utils.cc       |  18 +--
 .../{core => src/hbase/client}/multi-response.cc   |   4 +-
 .../{core => src/hbase/client}/mutation.cc         |   2 +-
 .../{core => src/hbase/client}/put-test.cc         |   6 +-
 .../{core => src/hbase/client}/put.cc              |   2 +-
 .../{core => src/hbase/client}/raw-async-table.cc  |   7 +-
 .../{core => src/hbase/client}/region-result.cc    |   2 +-
 .../hbase/client}/request-converter-test.cc        |   8 +-
 .../hbase/client}/request-converter.cc             |   4 +-
 .../hbase/client}/response-converter.cc            |   8 +-
 .../{core => src/hbase/client}/result-test.cc      |   4 +-
 .../{core => src/hbase/client}/result.cc           |   2 +-
 .../hbase/client}/scan-result-cache-test.cc        |   6 +-
 .../hbase/client}/scan-result-cache.cc             |   2 +-
 .../{core => src/hbase/client}/scan-test.cc        |   2 +-
 .../{core => src/hbase/client}/scan.cc             |   2 +-
 .../{core => src/hbase/client}/scanner-test.cc     |  34 ++---
 .../{core => src/hbase/client}/simple-client.cc    |  20 +--
 .../{core => src/hbase/client}/table.cc            |  18 +--
 .../{core => src/hbase/client}/time-range-test.cc  |   2 +-
 .../{core => src/hbase/client}/time-range.cc       |   2 +-
 .../{core => src/hbase/client}/zk-util-test.cc     |   2 +-
 .../{core => src/hbase/client}/zk-util.cc          |   2 +-
 .../{ => src/hbase}/connection/BUCK                |  32 +----
 .../hbase}/connection/client-dispatcher.cc         |   6 +-
 .../{ => src/hbase}/connection/client-handler.cc   |  10 +-
 .../hbase}/connection/connection-factory.cc        |  12 +-
 .../hbase}/connection/connection-pool-test.cc      |  10 +-
 .../{ => src/hbase}/connection/connection-pool.cc  |   2 +-
 .../{ => src/hbase}/connection/pipeline.cc         |   6 +-
 .../{ => src/hbase}/connection/request.cc          |   4 +-
 .../{ => src/hbase}/connection/rpc-client.cc       |   4 +-
 .../hbase}/connection/rpc-fault-injector.cc        |   2 +-
 .../hbase}/connection/rpc-test-server-handler.cc   |   6 +-
 .../{ => src/hbase}/connection/rpc-test-server.cc  |   6 +-
 .../{ => src/hbase}/connection/rpc-test.cc         |  12 +-
 .../{ => src/hbase}/connection/sasl-handler.cc     |   6 +-
 .../{ => src/hbase}/connection/sasl-util.cc        |   2 +-
 .../{ => src/hbase}/exceptions/BUCK                |   6 +-
 .../{ => src/hbase}/exceptions/exception-test.cc   |   2 +-
 .../{ => src/hbase}/exceptions/exception.cc        |   2 +-
 .../{ => src/hbase}/if/AccessControl.proto         |   0
 hbase-native-client/{ => src/hbase}/if/Admin.proto |   0
 .../{ => src/hbase}/if/Aggregate.proto             |   0
 .../{ => src/hbase}/if/Authentication.proto        |   0
 hbase-native-client/{ => src/hbase}/if/BUCK        |   1 +
 hbase-native-client/{ => src/hbase}/if/Cell.proto  |   0
 .../{ => src/hbase}/if/Client.proto                |   0
 .../{ => src/hbase}/if/ClusterId.proto             |   0
 .../{ => src/hbase}/if/ClusterStatus.proto         |   0
 .../{ => src/hbase}/if/Comparator.proto            |   0
 .../{ => src/hbase}/if/Encryption.proto            |   0
 .../{ => src/hbase}/if/ErrorHandling.proto         |   0
 hbase-native-client/{ => src/hbase}/if/FS.proto    |   0
 .../{ => src/hbase}/if/Filter.proto                |   0
 hbase-native-client/{ => src/hbase}/if/HBase.proto |   0
 hbase-native-client/{ => src/hbase}/if/HFile.proto |   0
 .../{ => src/hbase}/if/LoadBalancer.proto          |   0
 .../{ => src/hbase}/if/MapReduce.proto             |   0
 .../{ => src/hbase}/if/Master.proto                |   0
 .../{ => src/hbase}/if/MasterProcedure.proto       |   0
 .../{ => src/hbase}/if/MultiRowMutation.proto      |   0
 .../{ => src/hbase}/if/Procedure.proto             |   0
 hbase-native-client/{ => src/hbase}/if/Quota.proto |   0
 hbase-native-client/{ => src/hbase}/if/RPC.proto   |   0
 .../{ => src/hbase}/if/RSGroup.proto               |   0
 .../{ => src/hbase}/if/RSGroupAdmin.proto          |   0
 .../{ => src/hbase}/if/RegionNormalizer.proto      |   0
 .../{ => src/hbase}/if/RegionServerStatus.proto    |   0
 .../{ => src/hbase}/if/RowProcessor.proto          |   0
 .../{ => src/hbase}/if/SecureBulkLoad.proto        |   0
 .../{ => src/hbase}/if/Snapshot.proto              |   0
 .../{ => src/hbase}/if/Tracing.proto               |   0
 .../{ => src/hbase}/if/VisibilityLabels.proto      |   0
 hbase-native-client/{ => src/hbase}/if/WAL.proto   |   0
 .../{ => src/hbase}/if/ZooKeeper.proto             |   0
 hbase-native-client/{ => src/hbase}/if/test.proto  |   0
 .../{ => src/hbase}/if/test_rpc_service.proto      |   0
 hbase-native-client/{ => src/hbase}/security/BUCK  |   5 +-
 hbase-native-client/{ => src/hbase}/serde/BUCK     |  12 +-
 .../hbase}/serde/client-deserializer-test.cc       |   4 +-
 .../hbase}/serde/client-serializer-test.cc         |   6 +-
 .../hbase}/serde/region-info-deserializer-test.cc  |   6 +-
 .../{ => src/hbase}/serde/rpc-serde.cc             |   6 +-
 .../{ => src/hbase}/serde/server-name-test.cc      |   2 +-
 .../{ => src/hbase}/serde/table-name-test.cc       |   2 +-
 .../{ => src/hbase}/serde/zk-deserializer-test.cc  |   4 +-
 hbase-native-client/{ => src/hbase}/serde/zk.cc    |   2 +-
 hbase-native-client/{ => src/hbase}/test-util/BUCK |   3 +-
 .../{ => src/hbase}/test-util/mini-cluster.cc      |   2 +-
 .../{ => src/hbase}/test-util/mini-cluster.h       |   0
 .../{ => src/hbase}/test-util/test-util.cc         |   4 +-
 .../{ => src/hbase}/test-util/test-util.h          |   4 +-
 hbase-native-client/{ => src/hbase}/utils/BUCK     |  11 +-
 .../{ => src/hbase}/utils/bytes-util-test.cc       |   2 +-
 .../{ => src/hbase}/utils/bytes-util.cc            |   2 +-
 .../{ => src/hbase}/utils/concurrent-map-test.cc   |   2 +-
 .../{ => src/hbase}/utils/connection-util.cc       |   2 +-
 .../{ => src/hbase}/utils/user-util-test.cc        |   2 +-
 .../{ => src/hbase}/utils/user-util.cc             |   2 +-
 223 files changed, 804 insertions(+), 825 deletions(-)

diff --git a/hbase-native-client/.gitignore b/hbase-native-client/.gitignore
index c99ce59..e8dd42d 100644
--- a/hbase-native-client/.gitignore
+++ b/hbase-native-client/.gitignore
@@ -26,4 +26,4 @@ third-party/*
 /gcc-debug/
 
 # Generated files
-utils/version.h
+src/hbase/utils/version.h
diff --git a/hbase-native-client/Makefile b/hbase-native-client/Makefile
index a291dfa..4d6430c 100644
--- a/hbase-native-client/Makefile
+++ b/hbase-native-client/Makefile
@@ -19,17 +19,20 @@
 CC := g++
 LD := g++
 
+SRC_HBASE := src/hbase
+INCLUDE_HBASE := include/
 BUILD_PATH := build
 DEBUG_PATH := $(BUILD_PATH)/debug
 RELEASE_PATH := $(BUILD_PATH)/release
-PROTO_SRC_DIR := if
-PROTO_CXX_DIR := $(BUILD_PATH)/if
-MODULES := connection core exceptions security serde utils
+PROTO_SRC_DIR := $(SRC_HBASE)/if
+PROTO_CXX_DIR := $(BUILD_PATH)/$(PROTO_SRC_DIR)
+MODULES := connection client exceptions security serde utils
 TEST_MODULES := test-util # These modules contain test code, not included in the build for the lib
-SRC_DIR := $(MODULES)
-DEBUG_BUILD_DIR := $(addprefix $(DEBUG_PATH)/,$(MODULES))
-RELEASE_BUILD_DIR := $(addprefix $(RELEASE_PATH)/,$(MODULES))
-INCLUDE_DIR := . $(BUILD_PATH)
+SRC_DIR := $(addprefix $(SRC_HBASE)/,$(MODULES))
+DEBUG_BUILD_DIR := $(addprefix $(DEBUG_PATH)/hbase/,$(MODULES))
+RELEASE_BUILD_DIR := $(addprefix $(RELEASE_PATH)/hbase/,$(MODULES))
+
+INCLUDE_DIR := . src $(BUILD_PATH)/src $(INCLUDE_HBASE)
 TEST_BUILD_INCLUDE_DIR := $(INLCUDE_DIR) $(JAVA_HOME)/include/ $(JAVA_HOME)/include/linux
 
 #flags to pass to the CPP compiler & linker
@@ -42,14 +45,14 @@ LINKFLAG := -shared
 #define list of source files and object files
 ALLSRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cc))
 EXCLUDE_SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*-test.cc)) \
-	core/simple-client.cc core/load-client.cc
+	$(SRC_HBASE)/client/simple-client.cc $(SRC_HBASE)/client/load-client.cc
 SRC := $(filter-out $(EXCLUDE_SRC), $(ALLSRC))
-PROTOSRC := $(patsubst %.proto, $(addprefix $(BUILD_PATH)/,%.pb.cc),$(wildcard if/*.proto))
-PROTOHDR := $(patsubst %.proto, $(addprefix $(BUILD_PATH)/,%.pb.h),$(wildcard if/*.proto))
-DEBUG_OBJ := $(patsubst %.cc,$(DEBUG_PATH)/%.o,$(SRC))
-DEBUG_OBJ += $(patsubst %.cc,$(DEBUG_PATH)/%.o,$(PROTOSRC))
-RELEASE_OBJ := $(patsubst %.cc,$(RELEASE_PATH)/%.o,$(SRC))
-RELEASE_OBJ += $(patsubst %.cc,$(RELEASE_PATH)/%.o,$(PROTOSRC))
+PROTOSRC := $(patsubst $(PROTO_SRC_DIR)/%.proto, $(addprefix $(PROTO_CXX_DIR)/,%.pb.cc),$(wildcard $(PROTO_SRC_DIR)/*.proto))
+PROTOHDR := $(patsubst $(PROTO_SRC_DIR)/%.proto, $(addprefix $(PROTO_CXX_DIR)/,%.pb.h),$(wildcard $(PROTO_SRC_DIR)/*.proto))
+DEBUG_OBJ := $(patsubst $(SRC_HBASE)/%.cc,$(DEBUG_PATH)/hbase/%.o,$(SRC))
+DEBUG_OBJ += $(patsubst $(PROTO_CXX_DIR)/%.cc,$(DEBUG_PATH)/hbase/if/%.o,$(PROTOSRC))
+RELEASE_OBJ := $(patsubst $(SRC_HBASE)/%.cc,$(RELEASE_PATH)/hbase/%.o,$(SRC))
+RELEASE_OBJ += $(patsubst $(PROTO_CXX_DIR)/%.cc,$(RELEASE_PATH)/hbase/if/%.o,$(PROTOSRC))
 INCLUDES := $(addprefix -I,$(INCLUDE_DIR))
 
 LIB_DIR := /usr/local
@@ -59,8 +62,9 @@ LIB_RELEASE := $(RELEASE_PATH)/libHBaseClient.so
 ARC_RELEASE := $(RELEASE_PATH)/libHBaseClient.a
 LIB_DEBUG := $(DEBUG_PATH)/libHBaseClient_d.so
 ARC_DEBUG := $(DEBUG_PATH)/libHBaseClient_d.a
+LOCAL_INCLUDE_DIR := /usr/local/include/
 
-build: checkdirs protos $(LIB_DEBUG) $(LIB_RELEASE) $(ARC_DEBUG) $(ARC_RELEASE)
+build: checkdirs protos copyfiles $(LIB_DEBUG) $(LIB_RELEASE) $(ARC_DEBUG) $(ARC_RELEASE)
 
 vpath %.cc $(SRC_DIR)
 
@@ -80,7 +84,7 @@ $1/%.o: %.cc
 	$(CC) -c $$< -o $$@ -MF$$(@:%.o=%.d) -MT$$@ $(CPPFLAGS_RELEASE) $(INCLUDES)
 endef
 
-.PHONY: all clean install 
+.PHONY: all clean install copyfiles
 
 checkdirs: $(DEBUG_BUILD_DIR) $(RELEASE_BUILD_DIR) $(PROTO_CXX_DIR)
 
@@ -88,22 +92,32 @@ copyfiles:
 	@bin/copy-protobuf.sh
 	@bin/copy-version.sh
 
+# .proto files are in src/hbase/if. These are compiled into C++ code by the 
+# protoc compiler, and turned into .cc and .h files under build/src/hbase/if
 $(PROTO_CXX_DIR)/%.pb.cc $(PROTO_CXX_DIR)/%.pb.h: $(PROTO_SRC_DIR)/%.proto
 	@protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_CXX_DIR) $<
 
-#Run parallel jobs to speed up compilation
+# protos target compiles the .cc and .h files into .o files for the protobuf
+# generated source files
 protos: $(PROTO_CXX_DIR) $(PROTOSRC) $(PROTOHDR)
 	@make -j8 all -f Makefile.protos
 
-install:
+install_headers:
+	cp -r $(INCLUDE_HBASE)/hbase $(LOCAL_INCLUDE_DIR)
+	cp -r $(PROTO_CXX_DIR) $(LOCAL_INCLUDE_DIR)/hbase/
+
+uninstall_headers:
+	rm -rf $(LOCAL_INCLUDE_DIR)/hbase
+
+install: install_headers
 	cp $(LIB_RELEASE) $(LIB_LIBDIR)/libHBaseClient.so
 	cp $(ARC_RELEASE) $(LIB_LIBDIR)/libHBaseClient.a
 	cp $(LIB_DEBUG) $(LIB_LIBDIR)/libHBaseClient_d.so
 	cp $(ARC_DEBUG) $(LIB_LIBDIR)/libHBaseClient_d.a
 	ldconfig
 
-uninstall:
-	rm -f $(LIB_LIBDIR)/libHBaseClient.so $(LIB_LIBDIR)/libHBaseClient.a $(LIB_LIBDIR)/libHBaseClient_d.so $(ARC_DEBUG) $(LIB_LIBDIR)/libHBaseClient_d.a
+uninstall: uninstall_headers
+	rm -f $(LIB_LIBDIR)/libHBaseClient.so $(LIB_LIBDIR)/libHBaseClient.a $(LIB_LIBDIR)/libHBaseClient_d.so $(LIB_LIBDIR)/libHBaseClient_d.a
 	ldconfig
 
 $(PROTO_CXX_DIR):
diff --git a/hbase-native-client/Makefile.protos b/hbase-native-client/Makefile.protos
index 4cf8982..8712029 100644
--- a/hbase-native-client/Makefile.protos
+++ b/hbase-native-client/Makefile.protos
@@ -21,11 +21,11 @@ CC := g++
 BUILD_PATH := build
 DEBUG_PATH := $(BUILD_PATH)/debug
 RELEASE_PATH := $(BUILD_PATH)/release
-MODULES := $(BUILD_PATH)/if
-SRC_DIR := $(MODULES)
-DEBUG_BUILD_DIR := $(addprefix $(DEBUG_PATH)/,$(MODULES))
-RELEASE_BUILD_DIR := $(addprefix $(RELEASE_PATH)/,$(MODULES))
-INCLUDE_DIR := . $(BUILD_PATH)/if
+MODULES := if
+SRC_DIR := $(BUILD_PATH)/src/hbase/$(MODULES)
+DEBUG_BUILD_DIR := $(addprefix $(DEBUG_PATH)/hbase/,$(MODULES))
+RELEASE_BUILD_DIR := $(addprefix $(RELEASE_PATH)/hbase/,$(MODULES))
+INCLUDE_DIR := . $(BUILD_PATH)/src/hbase/if
 
 #flags to pass to the CPP compiler & linker
 CPPFLAGS_DEBUG := -D_GLIBCXX_USE_CXX11_ABI=0 -g -Wall -std=c++14 -pedantic -fPIC -MMD -MP
@@ -33,8 +33,8 @@ CPPFLAGS_RELEASE := -D_GLIBCXX_USE_CXX11_ABI=0 -DNDEBUG -O2 -Wall -std=c++14 -pe
 
 #define list of source files and object files
 SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cc))
-DEBUG_OBJ := $(patsubst %.cc,$(DEBUG_PATH)/%.o,$(SRC))
-RELEASE_OBJ := $(patsubst %.cc,$(RELEASE_PATH)/%.o,$(SRC))
+DEBUG_OBJ := $(patsubst $(SRC_DIR)/%.cc,$(DEBUG_PATH)/hbase/if/%.o,$(SRC))
+RELEASE_OBJ := $(patsubst $(SRC_DIR)/%.cc,$(RELEASE_PATH)/hbase/if/%.o,$(SRC))
 INCLUDES := $(addprefix -I,$(INCLUDE_DIR))
 
 all: $(DEBUG_BUILD_DIR) $(RELEASE_BUILD_DIR) $(DEBUG_OBJ) $(RELEASE_OBJ)
diff --git a/hbase-native-client/bin/copy-protobuf.sh b/hbase-native-client/bin/copy-protobuf.sh
index f727800..47544c8 100755
--- a/hbase-native-client/bin/copy-protobuf.sh
+++ b/hbase-native-client/bin/copy-protobuf.sh
@@ -20,5 +20,5 @@ IFS=$'\n\t'
 
 BIN_DIR=$(dirname "$0")
 PB_SOURCE_DIR="${BIN_DIR}/../../hbase-protocol/src/main/protobuf/"
-PB_DEST_DIR="${BIN_DIR}/../if/"
+PB_DEST_DIR="${BIN_DIR}/../src/hbase/if/"
 rsync -r --exclude BUCK ${PB_SOURCE_DIR} ${PB_DEST_DIR}
diff --git a/hbase-native-client/bin/copy-version.sh b/hbase-native-client/bin/copy-version.sh
index b33db7a..e2b707f 100755
--- a/hbase-native-client/bin/copy-version.sh
+++ b/hbase-native-client/bin/copy-version.sh
@@ -21,5 +21,5 @@ IFS=$'\n\t'
 # Copy the version.h generated from hbase-common/src/saveVersion.sh script via the mvn build
 BIN_DIR=$(dirname "$0")
 VERSION_SOURCE_DIR="${BIN_DIR}/../../hbase-common/target/generated-sources/native/utils/"
-VERSION_DEST_DIR="${BIN_DIR}/../utils/"
+VERSION_DEST_DIR="${BIN_DIR}/../include/hbase/utils/"
 cp $VERSION_SOURCE_DIR/* $VERSION_DEST_DIR/
diff --git a/hbase-native-client/bin/cpplint.sh b/hbase-native-client/bin/cpplint.sh
index 3684c2e..7a27945 100755
--- a/hbase-native-client/bin/cpplint.sh
+++ b/hbase-native-client/bin/cpplint.sh
@@ -20,6 +20,8 @@ IFS=$'\n\t'
 CPPLINT_LOC=https://raw.githubusercontent.com/google/styleguide/gh-pages/cpplint/cpplint.py
 OUTPUT=build/cpplint.py
 
+declare -a MODULES=( client connection exceptions security serde utils test-util )
+
 # Download if not already there
 wget -nc $CPPLINT_LOC -O $OUTPUT
 
@@ -27,4 +29,11 @@ wget -nc $CPPLINT_LOC -O $OUTPUT
 # Exclude the following rules: build/header_guard (We use #pragma once instead)
 #                              readability/todo (TODOs are generic)
 #                              build/c++11 (We are building with c++14)
-find core connection exceptions serde utils test-util security -name "*.h" -or -name "*.cc" | xargs -P8 python $OUTPUT --filter=-build/header_guard,-readability/todo,-build/c++11 --linelength=100
+for m in ${MODULES[@]}; do
+  if [ $m != "security" ]; then  #These are empty
+    exec find src/hbase/$m -name "*.h" -or -name "*.cc" | xargs -P8 python $OUTPUT --filter=-build/header_guard,-readability/todo,-build/c++11 --linelength=100
+  fi
+  if [ $m != "test-util" ]; then
+    exec find include/hbase/$m -name "*.h" -or -name "*.cc" | xargs -P8 python $OUTPUT --filter=-build/header_guard,-readability/todo,-build/c++11 --linelength=100
+  fi
+done
diff --git a/hbase-native-client/bin/format-code.sh b/hbase-native-client/bin/format-code.sh
index fe236d8..301167e 100755
--- a/hbase-native-client/bin/format-code.sh
+++ b/hbase-native-client/bin/format-code.sh
@@ -18,6 +18,11 @@
 set -euo pipefail
 IFS=$'\n\t'
 
+declare -a MODULES=( client connection exceptions security serde utils test-util )
 
-find core connection exceptions serde utils test-util security -name "*.h" -or -name "*.cc" | xargs -P8 clang-format -i --style='{BasedOnStyle: Google, ColumnLimit: 100}'
-find core connection exceptions serde utils test-util third-party security -name "BUCK" | xargs -P8 yapf -i --style=google
+for m in ${MODULES[@]}; do
+  find src/hbase/$m -name "*.h" -or -name "*.cc" | xargs -P8 clang-format -i --style='{BasedOnStyle: Google, ColumnLimit: 100}'
+  find src/hbase/$m -name "BUCK" | xargs -P8 yapf -i --style=google
+done
+
+find third-party -name "BUCK" | xargs -P8 yapf -i --style=google
diff --git a/hbase-native-client/include/hbase/client/BUCK b/hbase-native-client/include/hbase/client/BUCK
new file mode 100644
index 0000000..66d6896
--- /dev/null
+++ b/hbase-native-client/include/hbase/client/BUCK
@@ -0,0 +1,93 @@
+##
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This is the main library.
+cxx_library(
+    name="client",
+    header_namespace="hbase/client",
+    exported_headers=[
+        "async-client-scanner.h",
+        "async-connection.h",
+        "async-region-locator.h",
+        "async-rpc-retrying-caller-factory.h",
+        "async-rpc-retrying-caller.h",
+        "async-table-result-scanner.h",
+        "client.h",
+        "cell.h",
+        "filter.h",
+        "query.h",
+        "keyvalue-codec.h",
+        "region-location.h",
+        "location-cache.h",
+        "connection-configuration.h",
+        # TODO: move this out of exported
+        # Once meta lookup works
+        "meta-utils.h",
+        "get.h",
+        "increment.h",
+        "mutation.h",
+        "put.h",
+        "delete.h",
+        "scan.h",
+        "append.h",
+        "result.h",
+        "result-scanner.h",
+        "request-converter.h",
+        "response-converter.h",
+        "table.h",
+        "async-scan-rpc-retrying-caller.h",
+        "raw-async-table.h",
+        "raw-scan-result-consumer.h",
+        "scan-result-cache.h",
+        "hbase-rpc-controller.h",
+        "time-range.h",
+        "zk-util.h",
+        "action.h",
+        "multi-response.h",
+        "region-request.h",
+        "region-result.h",
+        "row.h",
+        "server-request.h",
+        "async-batch-rpc-retrying-caller.h",
+    ],
+    deps=[
+        "//include/hbase/exceptions:exceptions",
+        "//include/hbase/utils:utils",
+        "//include/hbase/connection:connection",
+        "//include/hbase/client:conf",
+        "//src/hbase/if:if",
+        "//include/hbase/serde:serde",
+        "//third-party:folly",
+        "//third-party:wangle",
+        "//third-party:zookeeper_mt",
+    ],
+    compiler_flags=['-Weffc++', '-ggdb'],
+    visibility=[
+        'PUBLIC',
+    ],)
+cxx_library(
+    name="conf",
+    header_namespace="hbase/client",
+    exported_headers=[
+        "configuration.h",
+        "hbase-configuration-loader.h",
+    ],
+    deps=["//src/hbase/utils:utils", "//third-party:folly"],
+    compiler_flags=['-Weffc++', '-ggdb'],
+    visibility=[
+        'PUBLIC',
+    ],)
diff --git a/hbase-native-client/core/action.h b/hbase-native-client/include/hbase/client/action.h
similarity index 97%
rename from hbase-native-client/core/action.h
rename to hbase-native-client/include/hbase/client/action.h
index a00f079..2288f12 100644
--- a/hbase-native-client/core/action.h
+++ b/hbase-native-client/include/hbase/client/action.h
@@ -20,7 +20,7 @@
 #pragma once
 
 #include <memory>
-#include "core/row.h"
+#include "hbase/client/row.h"
 
 namespace hbase {
 class Action {
diff --git a/hbase-native-client/core/append.h b/hbase-native-client/include/hbase/client/append.h
similarity index 96%
rename from hbase-native-client/core/append.h
rename to hbase-native-client/include/hbase/client/append.h
index cf9ac24..e7f9a6d 100644
--- a/hbase-native-client/core/append.h
+++ b/hbase-native-client/include/hbase/client/append.h
@@ -24,8 +24,8 @@
 #include <memory>
 #include <string>
 #include <vector>
-#include "core/cell.h"
-#include "core/mutation.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/mutation.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/async-batch-rpc-retrying-caller.h b/hbase-native-client/include/hbase/client/async-batch-rpc-retrying-caller.h
similarity index 89%
rename from hbase-native-client/core/async-batch-rpc-retrying-caller.h
rename to hbase-native-client/include/hbase/client/async-batch-rpc-retrying-caller.h
index 9194b04..39b7aa9 100644
--- a/hbase-native-client/core/async-batch-rpc-retrying-caller.h
+++ b/hbase-native-client/include/hbase/client/async-batch-rpc-retrying-caller.h
@@ -42,26 +42,26 @@
 #include <utility>
 #include <vector>
 
-#include "connection/rpc-client.h"
-#include "core/action.h"
-#include "core/async-connection.h"
-#include "core/location-cache.h"
-#include "core/multi-response.h"
-#include "core/region-location.h"
-#include "core/region-request.h"
-#include "core/region-result.h"
-#include "core/request-converter.h"
-#include "core/response-converter.h"
-#include "core/result.h"
-#include "core/row.h"
-#include "core/server-request.h"
-#include "exceptions/exception.h"
-#include "if/Client.pb.h"
-#include "if/HBase.pb.h"
-#include "security/user.h"
-#include "utils/connection-util.h"
-#include "utils/sys-util.h"
-#include "utils/time-util.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/action.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/location-cache.h"
+#include "hbase/client/multi-response.h"
+#include "hbase/client/region-location.h"
+#include "hbase/client/region-request.h"
+#include "hbase/client/region-result.h"
+#include "hbase/client/request-converter.h"
+#include "hbase/client/response-converter.h"
+#include "hbase/client/result.h"
+#include "hbase/client/row.h"
+#include "hbase/client/server-request.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/security/user.h"
+#include "hbase/utils/connection-util.h"
+#include "hbase/utils/sys-util.h"
+#include "hbase/utils/time-util.h"
 
 namespace hbase {
 /* Equals function for ServerName */
diff --git a/hbase-native-client/core/async-client-scanner.h b/hbase-native-client/include/hbase/client/async-client-scanner.h
similarity index 82%
rename from hbase-native-client/core/async-client-scanner.h
rename to hbase-native-client/include/hbase/client/async-client-scanner.h
index 8663468..cccf50b 100644
--- a/hbase-native-client/core/async-client-scanner.h
+++ b/hbase-native-client/include/hbase/client/async-client-scanner.h
@@ -33,24 +33,24 @@
 #include <utility>
 #include <vector>
 
-#include "connection/rpc-client.h"
-#include "core/async-connection.h"
-#include "core/async-rpc-retrying-caller-factory.h"
-#include "core/async-rpc-retrying-caller.h"
-#include "core/hbase-rpc-controller.h"
-#include "core/raw-scan-result-consumer.h"
-#include "core/region-location.h"
-#include "core/request-converter.h"
-#include "core/response-converter.h"
-#include "core/result.h"
-#include "core/scan-result-cache.h"
-#include "core/scan.h"
-#include "exceptions/exception.h"
-#include "if/Client.pb.h"
-#include "if/HBase.pb.h"
-#include "utils/connection-util.h"
-#include "utils/sys-util.h"
-#include "utils/time-util.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/async-rpc-retrying-caller-factory.h"
+#include "hbase/client/async-rpc-retrying-caller.h"
+#include "hbase/client/hbase-rpc-controller.h"
+#include "hbase/client/raw-scan-result-consumer.h"
+#include "hbase/client/region-location.h"
+#include "hbase/client/request-converter.h"
+#include "hbase/client/response-converter.h"
+#include "hbase/client/result.h"
+#include "hbase/client/scan-result-cache.h"
+#include "hbase/client/scan.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/utils/connection-util.h"
+#include "hbase/utils/sys-util.h"
+#include "hbase/utils/time-util.h"
 
 using std::chrono::nanoseconds;
 using std::chrono::milliseconds;
diff --git a/hbase-native-client/core/async-connection.h b/hbase-native-client/include/hbase/client/async-connection.h
similarity index 91%
rename from hbase-native-client/core/async-connection.h
rename to hbase-native-client/include/hbase/client/async-connection.h
index 7b260a5..547ac76 100644
--- a/hbase-native-client/core/async-connection.h
+++ b/hbase-native-client/include/hbase/client/async-connection.h
@@ -28,16 +28,16 @@
 #include <string>
 #include <utility>
 
-#include "connection/rpc-client.h"
-#include "core/async-region-locator.h"
-#include "core/configuration.h"
-#include "core/connection-configuration.h"
-#include "core/hbase-configuration-loader.h"
-#include "core/hbase-rpc-controller.h"
-#include "core/keyvalue-codec.h"
-#include "core/location-cache.h"
-#include "if/Cell.pb.h"
-#include "serde/table-name.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/async-region-locator.h"
+#include "hbase/client/configuration.h"
+#include "hbase/client/connection-configuration.h"
+#include "hbase/client/hbase-configuration-loader.h"
+#include "hbase/client/hbase-rpc-controller.h"
+#include "hbase/client/keyvalue-codec.h"
+#include "hbase/client/location-cache.h"
+#include "hbase/if/Cell.pb.h"
+#include "hbase/serde/table-name.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/async-region-locator.h b/hbase-native-client/include/hbase/client/async-region-locator.h
similarity index 92%
rename from hbase-native-client/core/async-region-locator.h
rename to hbase-native-client/include/hbase/client/async-region-locator.h
index f75cb7e..d42038e 100644
--- a/hbase-native-client/core/async-region-locator.h
+++ b/hbase-native-client/include/hbase/client/async-region-locator.h
@@ -24,11 +24,11 @@
 #include <memory>
 #include <string>
 
-#include "core/region-location.h"
-#include "if/Client.pb.h"
-#include "serde/region-info.h"
-#include "serde/server-name.h"
-#include "serde/table-name.h"
+#include "hbase/client/region-location.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/serde/region-info.h"
+#include "hbase/serde/server-name.h"
+#include "hbase/serde/table-name.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/async-rpc-retrying-caller-factory.h b/hbase-native-client/include/hbase/client/async-rpc-retrying-caller-factory.h
similarity index 95%
rename from hbase-native-client/core/async-rpc-retrying-caller-factory.h
rename to hbase-native-client/include/hbase/client/async-rpc-retrying-caller-factory.h
index 188f469..a580896 100644
--- a/hbase-native-client/core/async-rpc-retrying-caller-factory.h
+++ b/hbase-native-client/include/hbase/client/async-rpc-retrying-caller-factory.h
@@ -25,18 +25,18 @@
 #include <string>
 #include <vector>
 
-#include "connection/rpc-client.h"
-#include "core/async-batch-rpc-retrying-caller.h"
-#include "core/async-rpc-retrying-caller.h"
-#include "core/async-scan-rpc-retrying-caller.h"
-#include "core/raw-scan-result-consumer.h"
-#include "core/region-location.h"
-#include "core/row.h"
-#include "core/scan-result-cache.h"
-#include "core/scan.h"
-
-#include "if/Client.pb.h"
-#include "if/HBase.pb.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/async-batch-rpc-retrying-caller.h"
+#include "hbase/client/async-rpc-retrying-caller.h"
+#include "hbase/client/async-scan-rpc-retrying-caller.h"
+#include "hbase/client/raw-scan-result-consumer.h"
+#include "hbase/client/region-location.h"
+#include "hbase/client/row.h"
+#include "hbase/client/scan-result-cache.h"
+#include "hbase/client/scan.h"
+
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/async-rpc-retrying-caller.h b/hbase-native-client/include/hbase/client/async-rpc-retrying-caller.h
similarity index 94%
rename from hbase-native-client/core/async-rpc-retrying-caller.h
rename to hbase-native-client/include/hbase/client/async-rpc-retrying-caller.h
index c7e28d0..b5f4ad2 100644
--- a/hbase-native-client/core/async-rpc-retrying-caller.h
+++ b/hbase-native-client/include/hbase/client/async-rpc-retrying-caller.h
@@ -31,11 +31,11 @@
 #include <type_traits>
 #include <utility>
 #include <vector>
-#include "core/async-connection.h"
-#include "core/hbase-rpc-controller.h"
-#include "core/region-location.h"
-#include "exceptions/exception.h"
-#include "if/HBase.pb.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/hbase-rpc-controller.h"
+#include "hbase/client/region-location.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/async-scan-rpc-retrying-caller.h b/hbase-native-client/include/hbase/client/async-scan-rpc-retrying-caller.h
similarity index 92%
rename from hbase-native-client/core/async-scan-rpc-retrying-caller.h
rename to hbase-native-client/include/hbase/client/async-scan-rpc-retrying-caller.h
index 9555e80..68382e6 100644
--- a/hbase-native-client/core/async-scan-rpc-retrying-caller.h
+++ b/hbase-native-client/include/hbase/client/async-scan-rpc-retrying-caller.h
@@ -35,24 +35,24 @@
 #include <utility>
 #include <vector>
 
-#include "connection/rpc-client.h"
-#include "core/async-connection.h"
-#include "core/hbase-rpc-controller.h"
-#include "core/raw-scan-result-consumer.h"
-#include "core/region-location.h"
-#include "core/request-converter.h"
-#include "core/response-converter.h"
-#include "core/result.h"
-#include "core/scan-result-cache.h"
-#include "core/scan.h"
-#include "exceptions/exception.h"
-#include "if/Client.pb.h"
-#include "if/HBase.pb.h"
-#include "utils/bytes-util.h"
-#include "utils/connection-util.h"
-#include "utils/optional.h"
-#include "utils/sys-util.h"
-#include "utils/time-util.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/hbase-rpc-controller.h"
+#include "hbase/client/raw-scan-result-consumer.h"
+#include "hbase/client/region-location.h"
+#include "hbase/client/request-converter.h"
+#include "hbase/client/response-converter.h"
+#include "hbase/client/result.h"
+#include "hbase/client/scan-result-cache.h"
+#include "hbase/client/scan.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/utils/bytes-util.h"
+#include "hbase/utils/connection-util.h"
+#include "hbase/utils/optional.h"
+#include "hbase/utils/sys-util.h"
+#include "hbase/utils/time-util.h"
 
 using std::chrono::nanoseconds;
 using std::chrono::milliseconds;
diff --git a/hbase-native-client/core/async-table-result-scanner.h b/hbase-native-client/include/hbase/client/async-table-result-scanner.h
similarity index 94%
rename from hbase-native-client/core/async-table-result-scanner.h
rename to hbase-native-client/include/hbase/client/async-table-result-scanner.h
index dcdf871..0e1d444 100644
--- a/hbase-native-client/core/async-table-result-scanner.h
+++ b/hbase-native-client/include/hbase/client/async-table-result-scanner.h
@@ -29,11 +29,11 @@
 #include <string>
 #include <vector>
 
-#include "core/raw-scan-result-consumer.h"
-#include "core/result-scanner.h"
-#include "core/result.h"
-#include "if/Client.pb.h"
-#include "if/HBase.pb.h"
+#include "hbase/client/raw-scan-result-consumer.h"
+#include "hbase/client/result-scanner.h"
+#include "hbase/client/result.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/cell.h b/hbase-native-client/include/hbase/client/cell.h
similarity index 100%
rename from hbase-native-client/core/cell.h
rename to hbase-native-client/include/hbase/client/cell.h
diff --git a/hbase-native-client/core/client.h b/hbase-native-client/include/hbase/client/client.h
similarity index 90%
rename from hbase-native-client/core/client.h
rename to hbase-native-client/include/hbase/client/client.h
index 5563a15..2e77df9 100644
--- a/hbase-native-client/core/client.h
+++ b/hbase-native-client/include/hbase/client/client.h
@@ -22,12 +22,12 @@
 #include <memory>
 #include <string>
 
-#include "connection/rpc-client.h"
-#include "core/async-connection.h"
-#include "core/configuration.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/configuration.h"
 
-#include "core/table.h"
-#include "serde/table-name.h"
+#include "hbase/client/table.h"
+#include "hbase/serde/table-name.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/configuration.h b/hbase-native-client/include/hbase/client/configuration.h
similarity index 100%
rename from hbase-native-client/core/configuration.h
rename to hbase-native-client/include/hbase/client/configuration.h
diff --git a/hbase-native-client/core/connection-configuration.h b/hbase-native-client/include/hbase/client/connection-configuration.h
similarity index 99%
rename from hbase-native-client/core/connection-configuration.h
rename to hbase-native-client/include/hbase/client/connection-configuration.h
index 995798e..308e1ba 100644
--- a/hbase-native-client/core/connection-configuration.h
+++ b/hbase-native-client/include/hbase/client/connection-configuration.h
@@ -23,7 +23,7 @@
 #include <climits>
 #include <string>
 
-#include "core/configuration.h"
+#include "hbase/client/configuration.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/delete.h b/hbase-native-client/include/hbase/client/delete.h
similarity index 98%
rename from hbase-native-client/core/delete.h
rename to hbase-native-client/include/hbase/client/delete.h
index 9ebb5a6..5fdbcc1 100644
--- a/hbase-native-client/core/delete.h
+++ b/hbase-native-client/include/hbase/client/delete.h
@@ -24,8 +24,8 @@
 #include <memory>
 #include <string>
 #include <vector>
-#include "core/cell.h"
-#include "core/mutation.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/mutation.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/filter.h b/hbase-native-client/include/hbase/client/filter.h
similarity index 99%
rename from hbase-native-client/core/filter.h
rename to hbase-native-client/include/hbase/client/filter.h
index 1e870f9..6ad4443 100644
--- a/hbase-native-client/core/filter.h
+++ b/hbase-native-client/include/hbase/client/filter.h
@@ -25,9 +25,9 @@
 #include <utility>
 #include <vector>
 
-#include "if/Comparator.pb.h"
-#include "if/Filter.pb.h"
-#include "if/HBase.pb.h"
+#include "hbase/if/Comparator.pb.h"
+#include "hbase/if/Filter.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/get.h b/hbase-native-client/include/hbase/client/get.h
similarity index 96%
rename from hbase-native-client/core/get.h
rename to hbase-native-client/include/hbase/client/get.h
index c4cddfb..b6a11f9 100644
--- a/hbase-native-client/core/get.h
+++ b/hbase-native-client/include/hbase/client/get.h
@@ -24,10 +24,10 @@
 #include <memory>
 #include <string>
 #include <vector>
-#include "core/query.h"
-#include "core/row.h"
-#include "core/time-range.h"
-#include "if/Client.pb.h"
+#include "hbase/client/query.h"
+#include "hbase/client/row.h"
+#include "hbase/client/time-range.h"
+#include "hbase/if/Client.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/hbase-configuration-loader.h b/hbase-native-client/include/hbase/client/hbase-configuration-loader.h
similarity index 98%
rename from hbase-native-client/core/hbase-configuration-loader.h
rename to hbase-native-client/include/hbase/client/hbase-configuration-loader.h
index 95b2541..8792aa2 100644
--- a/hbase-native-client/core/hbase-configuration-loader.h
+++ b/hbase-native-client/include/hbase/client/hbase-configuration-loader.h
@@ -25,8 +25,8 @@
 
 #include <boost/optional.hpp>
 
-#include "core/configuration.h"
-#include "utils/optional.h"
+#include "hbase/client/configuration.h"
+#include "hbase/utils/optional.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/hbase-rpc-controller.h b/hbase-native-client/include/hbase/client/hbase-rpc-controller.h
similarity index 100%
rename from hbase-native-client/core/hbase-rpc-controller.h
rename to hbase-native-client/include/hbase/client/hbase-rpc-controller.h
diff --git a/hbase-native-client/core/increment.h b/hbase-native-client/include/hbase/client/increment.h
similarity index 96%
rename from hbase-native-client/core/increment.h
rename to hbase-native-client/include/hbase/client/increment.h
index 330f44a..3169c19 100644
--- a/hbase-native-client/core/increment.h
+++ b/hbase-native-client/include/hbase/client/increment.h
@@ -24,8 +24,8 @@
 #include <memory>
 #include <string>
 #include <vector>
-#include "core/cell.h"
-#include "core/mutation.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/mutation.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/keyvalue-codec.h b/hbase-native-client/include/hbase/client/keyvalue-codec.h
similarity index 98%
rename from hbase-native-client/core/keyvalue-codec.h
rename to hbase-native-client/include/hbase/client/keyvalue-codec.h
index fd58346..5a92c8c 100644
--- a/hbase-native-client/core/keyvalue-codec.h
+++ b/hbase-native-client/include/hbase/client/keyvalue-codec.h
@@ -23,8 +23,8 @@
 #include <folly/io/IOBuf.h>
 #include <memory>
 
-#include "core/cell.h"
-#include "serde/codec.h"
+#include "hbase/client/cell.h"
+#include "hbase/serde/codec.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/location-cache.h b/hbase-native-client/include/hbase/client/location-cache.h
similarity index 96%
rename from hbase-native-client/core/location-cache.h
rename to hbase-native-client/include/hbase/client/location-cache.h
index 6eb61ef..a800642 100644
--- a/hbase-native-client/core/location-cache.h
+++ b/hbase-native-client/include/hbase/client/location-cache.h
@@ -33,13 +33,13 @@
 #include <string>
 #include <unordered_map>
 
-#include "connection/connection-pool.h"
-#include "core/async-region-locator.h"
-#include "core/configuration.h"
-#include "core/meta-utils.h"
-#include "core/region-location.h"
-#include "core/zk-util.h"
-#include "serde/table-name.h"
+#include "hbase/connection/connection-pool.h"
+#include "hbase/client/async-region-locator.h"
+#include "hbase/client/configuration.h"
+#include "hbase/client/meta-utils.h"
+#include "hbase/client/region-location.h"
+#include "hbase/client/zk-util.h"
+#include "hbase/serde/table-name.h"
 
 namespace hbase {
 // Forward
diff --git a/hbase-native-client/core/meta-utils.h b/hbase-native-client/include/hbase/client/meta-utils.h
similarity index 92%
rename from hbase-native-client/core/meta-utils.h
rename to hbase-native-client/include/hbase/client/meta-utils.h
index d178179..3fc320a 100644
--- a/hbase-native-client/core/meta-utils.h
+++ b/hbase-native-client/include/hbase/client/meta-utils.h
@@ -21,11 +21,11 @@
 #include <memory>
 #include <string>
 
-#include "connection/request.h"
-#include "connection/response.h"
-#include "core/region-location.h"
-#include "if/HBase.pb.h"
-#include "serde/table-name.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/client/region-location.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/serde/table-name.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/multi-response.h b/hbase-native-client/include/hbase/client/multi-response.h
similarity index 96%
rename from hbase-native-client/core/multi-response.h
rename to hbase-native-client/include/hbase/client/multi-response.h
index d38cfd6..b9b9a38 100644
--- a/hbase-native-client/core/multi-response.h
+++ b/hbase-native-client/include/hbase/client/multi-response.h
@@ -19,15 +19,15 @@
 
 #pragma once
 
-#include <core/region-result.h>
 #include <folly/ExceptionWrapper.h>
 #include <exception>
 #include <map>
 #include <memory>
 #include <string>
 
-#include "core/result.h"
-#include "if/Client.pb.h"
+#include "hbase/client/region-result.h"
+#include "hbase/client/result.h"
+#include "hbase/if/Client.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/mutation.h b/hbase-native-client/include/hbase/client/mutation.h
similarity index 96%
rename from hbase-native-client/core/mutation.h
rename to hbase-native-client/include/hbase/client/mutation.h
index 496891e..f70e2b7 100644
--- a/hbase-native-client/core/mutation.h
+++ b/hbase-native-client/include/hbase/client/mutation.h
@@ -25,9 +25,9 @@
 #include <memory>
 #include <string>
 #include <vector>
-#include "core/cell.h"
-#include "core/row.h"
-#include "if/Client.pb.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/row.h"
+#include "hbase/if/Client.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/put.h b/hbase-native-client/include/hbase/client/put.h
similarity index 96%
rename from hbase-native-client/core/put.h
rename to hbase-native-client/include/hbase/client/put.h
index 8a43dec..cb0e17d 100644
--- a/hbase-native-client/core/put.h
+++ b/hbase-native-client/include/hbase/client/put.h
@@ -24,8 +24,8 @@
 #include <memory>
 #include <string>
 #include <vector>
-#include "core/cell.h"
-#include "core/mutation.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/mutation.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/query.h b/hbase-native-client/include/hbase/client/query.h
similarity index 97%
rename from hbase-native-client/core/query.h
rename to hbase-native-client/include/hbase/client/query.h
index 301f448..76f613e 100644
--- a/hbase-native-client/core/query.h
+++ b/hbase-native-client/include/hbase/client/query.h
@@ -21,7 +21,7 @@
 
 #include <memory>
 
-#include "core/filter.h"
+#include "hbase/client/filter.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/raw-async-table.h b/hbase-native-client/include/hbase/client/raw-async-table.h
similarity index 90%
rename from hbase-native-client/core/raw-async-table.h
rename to hbase-native-client/include/hbase/client/raw-async-table.h
index 97eef7f..9db291e 100644
--- a/hbase-native-client/core/raw-async-table.h
+++ b/hbase-native-client/include/hbase/client/raw-async-table.h
@@ -25,18 +25,17 @@
 #include <string>
 #include <vector>
 
-#include "core/async-batch-rpc-retrying-caller.h"
-#include "core/async-client-scanner.h"
-#include "core/async-connection.h"
-#include "core/async-rpc-retrying-caller-factory.h"
-#include "core/async-rpc-retrying-caller.h"
-#include "core/connection-configuration.h"
-#include "core/delete.h"
-#include "core/get.h"
-#include "core/increment.h"
-#include "core/put.h"
-#include "core/result.h"
-#include "core/scan.h"
+#include "hbase/client/async-client-scanner.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/async-rpc-retrying-caller-factory.h"
+#include "hbase/client/async-rpc-retrying-caller.h"
+#include "hbase/client/connection-configuration.h"
+#include "hbase/client/delete.h"
+#include "hbase/client/get.h"
+#include "hbase/client/increment.h"
+#include "hbase/client/put.h"
+#include "hbase/client/result.h"
+#include "hbase/client/scan.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/raw-scan-result-consumer.h b/hbase-native-client/include/hbase/client/raw-scan-result-consumer.h
similarity index 97%
rename from hbase-native-client/core/raw-scan-result-consumer.h
rename to hbase-native-client/include/hbase/client/raw-scan-result-consumer.h
index b7c3c48..26ff709 100644
--- a/hbase-native-client/core/raw-scan-result-consumer.h
+++ b/hbase-native-client/include/hbase/client/raw-scan-result-consumer.h
@@ -26,9 +26,9 @@
 #include <thread>
 #include <vector>
 
-#include "core/result.h"
-#include "if/Client.pb.h"
-#include "if/HBase.pb.h"
+#include "hbase/client/result.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/region-location.h b/hbase-native-client/include/hbase/client/region-location.h
similarity index 98%
rename from hbase-native-client/core/region-location.h
rename to hbase-native-client/include/hbase/client/region-location.h
index f73999f..3eded91 100644
--- a/hbase-native-client/core/region-location.h
+++ b/hbase-native-client/include/hbase/client/region-location.h
@@ -21,7 +21,7 @@
 #include <memory>
 #include <string>
 
-#include "if/HBase.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/region-request.h b/hbase-native-client/include/hbase/client/region-request.h
similarity index 95%
rename from hbase-native-client/core/region-request.h
rename to hbase-native-client/include/hbase/client/region-request.h
index aded3a9..9e7f85e 100644
--- a/hbase-native-client/core/region-request.h
+++ b/hbase-native-client/include/hbase/client/region-request.h
@@ -22,8 +22,8 @@
 #include <memory>
 #include <queue>
 #include <vector>
-#include "core/action.h"
-#include "core/region-location.h"
+#include "hbase/client/action.h"
+#include "hbase/client/region-location.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/region-result.h b/hbase-native-client/include/hbase/client/region-result.h
similarity index 96%
rename from hbase-native-client/core/region-result.h
rename to hbase-native-client/include/hbase/client/region-result.h
index b961634..87398a2 100644
--- a/hbase-native-client/core/region-result.h
+++ b/hbase-native-client/include/hbase/client/region-result.h
@@ -24,8 +24,8 @@
 #include <memory>
 #include <string>
 #include <tuple>
-#include "core/result.h"
-#include "if/Client.pb.h"
+#include "hbase/client/result.h"
+#include "hbase/if/Client.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/request-converter.h b/hbase-native-client/include/hbase/client/request-converter.h
similarity index 90%
rename from hbase-native-client/core/request-converter.h
rename to hbase-native-client/include/hbase/client/request-converter.h
index bcea278..eef6b5d 100644
--- a/hbase-native-client/core/request-converter.h
+++ b/hbase-native-client/include/hbase/client/request-converter.h
@@ -22,20 +22,20 @@
 #include <memory>
 #include <string>
 #include <vector>
-#include "connection/request.h"
-#include "core/action.h"
-#include "core/append.h"
-#include "core/cell.h"
-#include "core/delete.h"
-#include "core/get.h"
-#include "core/increment.h"
-#include "core/mutation.h"
-#include "core/put.h"
-#include "core/region-request.h"
-#include "core/scan.h"
-#include "core/server-request.h"
-#include "if/Client.pb.h"
-#include "if/HBase.pb.h"
+#include "hbase/connection/request.h"
+#include "hbase/client/action.h"
+#include "hbase/client/append.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/delete.h"
+#include "hbase/client/get.h"
+#include "hbase/client/increment.h"
+#include "hbase/client/mutation.h"
+#include "hbase/client/put.h"
+#include "hbase/client/region-request.h"
+#include "hbase/client/scan.h"
+#include "hbase/client/server-request.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 using MutationType = hbase::pb::MutationProto_MutationType;
 using DeleteType = hbase::pb::MutationProto_DeleteType;
diff --git a/hbase-native-client/core/response-converter.h b/hbase-native-client/include/hbase/client/response-converter.h
similarity index 89%
rename from hbase-native-client/core/response-converter.h
rename to hbase-native-client/include/hbase/client/response-converter.h
index edd4165..14757a5 100644
--- a/hbase-native-client/core/response-converter.h
+++ b/hbase-native-client/include/hbase/client/response-converter.h
@@ -21,13 +21,13 @@
 
 #include <memory>
 #include <vector>
-#include "connection/request.h"
-#include "connection/response.h"
-#include "core/multi-response.h"
-#include "core/result.h"
-#include "core/server-request.h"
-#include "if/Client.pb.h"
-#include "serde/cell-scanner.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/client/multi-response.h"
+#include "hbase/client/result.h"
+#include "hbase/client/server-request.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/serde/cell-scanner.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/result-scanner.h b/hbase-native-client/include/hbase/client/result-scanner.h
similarity index 95%
rename from hbase-native-client/core/result-scanner.h
rename to hbase-native-client/include/hbase/client/result-scanner.h
index 9460521..0b22684 100644
--- a/hbase-native-client/core/result-scanner.h
+++ b/hbase-native-client/include/hbase/client/result-scanner.h
@@ -26,8 +26,8 @@
 #include <string>
 #include <vector>
 
-#include "core/cell.h"
-#include "core/result.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/result.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/result.h b/hbase-native-client/include/hbase/client/result.h
similarity index 98%
rename from hbase-native-client/core/result.h
rename to hbase-native-client/include/hbase/client/result.h
index f18071b..e5222b6 100644
--- a/hbase-native-client/core/result.h
+++ b/hbase-native-client/include/hbase/client/result.h
@@ -25,8 +25,8 @@
 #include <string>
 #include <vector>
 
-#include "core/cell.h"
-#include "utils/optional.h"
+#include "hbase/client/cell.h"
+#include "hbase/utils/optional.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/row.h b/hbase-native-client/include/hbase/client/row.h
similarity index 100%
rename from hbase-native-client/core/row.h
rename to hbase-native-client/include/hbase/client/row.h
diff --git a/hbase-native-client/core/scan-result-cache.h b/hbase-native-client/include/hbase/client/scan-result-cache.h
similarity index 96%
rename from hbase-native-client/core/scan-result-cache.h
rename to hbase-native-client/include/hbase/client/scan-result-cache.h
index 5d3d0ab..e423108 100644
--- a/hbase-native-client/core/scan-result-cache.h
+++ b/hbase-native-client/include/hbase/client/scan-result-cache.h
@@ -26,9 +26,9 @@
 #include <string>
 #include <vector>
 
-#include "core/result.h"
-#include "if/Client.pb.h"
-#include "if/HBase.pb.h"
+#include "hbase/client/result.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/scan.h b/hbase-native-client/include/hbase/client/scan.h
similarity index 98%
rename from hbase-native-client/core/scan.h
rename to hbase-native-client/include/hbase/client/scan.h
index 1085c4b..90daa31 100644
--- a/hbase-native-client/core/scan.h
+++ b/hbase-native-client/include/hbase/client/scan.h
@@ -24,9 +24,9 @@
 #include <memory>
 #include <string>
 #include <vector>
-#include "core/get.h"
-#include "core/time-range.h"
-#include "if/Client.pb.h"
+#include "hbase/client/get.h"
+#include "hbase/client/time-range.h"
+#include "hbase/if/Client.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/server-request.h b/hbase-native-client/include/hbase/client/server-request.h
similarity index 94%
rename from hbase-native-client/core/server-request.h
rename to hbase-native-client/include/hbase/client/server-request.h
index 85df9ed..6ad8c66 100644
--- a/hbase-native-client/core/server-request.h
+++ b/hbase-native-client/include/hbase/client/server-request.h
@@ -23,9 +23,9 @@
 #include <memory>
 #include <stdexcept>
 #include <string>
-#include "core/action.h"
-#include "core/region-location.h"
-#include "core/region-request.h"
+#include "hbase/client/action.h"
+#include "hbase/client/region-location.h"
+#include "hbase/client/region-request.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/table.h b/hbase-native-client/include/hbase/client/table.h
similarity index 92%
rename from hbase-native-client/core/table.h
rename to hbase-native-client/include/hbase/client/table.h
index 6340494..338d19f 100644
--- a/hbase-native-client/core/table.h
+++ b/hbase-native-client/include/hbase/client/table.h
@@ -24,17 +24,17 @@
 #include <string>
 #include <vector>
 
-#include "connection/rpc-client.h"
-#include "core/async-connection.h"
-#include "core/client.h"
-#include "core/configuration.h"
-#include "core/get.h"
-#include "core/location-cache.h"
-#include "core/put.h"
-#include "core/raw-async-table.h"
-#include "core/result-scanner.h"
-#include "core/result.h"
-#include "serde/table-name.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/client.h"
+#include "hbase/client/configuration.h"
+#include "hbase/client/get.h"
+#include "hbase/client/location-cache.h"
+#include "hbase/client/put.h"
+#include "hbase/client/raw-async-table.h"
+#include "hbase/client/result-scanner.h"
+#include "hbase/client/result.h"
+#include "hbase/serde/table-name.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/time-range.h b/hbase-native-client/include/hbase/client/time-range.h
similarity index 100%
rename from hbase-native-client/core/time-range.h
rename to hbase-native-client/include/hbase/client/time-range.h
diff --git a/hbase-native-client/core/zk-util.h b/hbase-native-client/include/hbase/client/zk-util.h
similarity index 97%
rename from hbase-native-client/core/zk-util.h
rename to hbase-native-client/include/hbase/client/zk-util.h
index 403fbe4..5d9a099 100644
--- a/hbase-native-client/core/zk-util.h
+++ b/hbase-native-client/include/hbase/client/zk-util.h
@@ -20,7 +20,7 @@
 
 #include <cstdlib>
 #include <string>
-#include "core/configuration.h"
+#include "hbase/client/configuration.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/BUCK b/hbase-native-client/include/hbase/connection/BUCK
similarity index 67%
copy from hbase-native-client/connection/BUCK
copy to hbase-native-client/include/hbase/connection/BUCK
index a87d27a..9a0b0cf 100644
--- a/hbase-native-client/connection/BUCK
+++ b/hbase-native-client/include/hbase/connection/BUCK
@@ -19,6 +19,7 @@
 # to a single server.
 cxx_library(
     name="connection",
+    header_namespace="hbase/connection",
     exported_headers=[
         "client-dispatcher.h",
         "client-handler.h",
@@ -38,49 +39,19 @@ cxx_library(
         "rpc-fault-injector.h",
         "rpc-fault-injector-inl.h",
     ],
-    srcs=[
-        "client-dispatcher.cc",
-        "client-handler.cc",
-        "connection-factory.cc",
-        "connection-pool.cc",
-        "pipeline.cc",
-        "request.cc",
-        "rpc-client.cc",
-        "sasl-handler.cc",
-        "sasl-util.cc",
-        "rpc-test-server.cc",
-        "rpc-test-server-handler.cc",
-        "rpc-fault-injector.cc",
-    ],
     deps=[
-        "//if:if",
-        "//utils:utils",
-        "//serde:serde",
-        "//security:security",
+        "//src/hbase/if:if",
+        "//include/hbase/utils:utils",
+        "//include/hbase/serde:serde",
+        "//include/hbase/security:security",
         "//third-party:folly",
         "//third-party:wangle",
-        "//exceptions:exceptions",
+        "//include/hbase/exceptions:exceptions",
     ],
     compiler_flags=['-Weffc++'],
     linker_flags=['-L/usr/local/lib', '-lsasl2', '-lkrb5'],
     exported_linker_flags=['-L/usr/local/lib', '-lsasl2', '-lkrb5'],
     visibility=[
-        '//core/...',
-    ],)
-cxx_test(
-    name="connection-pool-test",
-    srcs=[
-        "connection-pool-test.cc",
-    ],
-    deps=[
-        ":connection",
+        '//include/hbase/client/...',
+        '//src/hbase/connection/...',
     ],)
-cxx_test(
-    name="rpc-test",
-    srcs=[
-        "rpc-test.cc",
-    ],
-    deps=[
-        ":connection",
-    ],
-    run_test_separately=True,)
diff --git a/hbase-native-client/connection/client-dispatcher.h b/hbase-native-client/include/hbase/connection/client-dispatcher.h
similarity index 94%
rename from hbase-native-client/connection/client-dispatcher.h
rename to hbase-native-client/include/hbase/connection/client-dispatcher.h
index 7ef3759..33384a7 100644
--- a/hbase-native-client/connection/client-dispatcher.h
+++ b/hbase-native-client/include/hbase/connection/client-dispatcher.h
@@ -28,10 +28,10 @@
 #include <mutex>
 #include <string>
 
-#include "connection/pipeline.h"
-#include "connection/request.h"
-#include "connection/response.h"
-#include "utils/concurrent-map.h"
+#include "hbase/connection/pipeline.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/utils/concurrent-map.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/client-handler.h b/hbase-native-client/include/hbase/connection/client-handler.h
similarity index 93%
rename from hbase-native-client/connection/client-handler.h
rename to hbase-native-client/include/hbase/connection/client-handler.h
index b6f19a2..b3bd2b6 100644
--- a/hbase-native-client/connection/client-handler.h
+++ b/hbase-native-client/include/hbase/connection/client-handler.h
@@ -26,11 +26,11 @@
 #include <string>
 #include <utility>
 
-#include "core/configuration.h"
-#include "exceptions/exception.h"
-#include "serde/codec.h"
-#include "serde/rpc-serde.h"
-#include "utils/concurrent-map.h"
+#include "hbase/client/configuration.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/serde/codec.h"
+#include "hbase/serde/rpc-serde.h"
+#include "hbase/utils/concurrent-map.h"
 
 // Forward decs.
 namespace hbase {
diff --git a/hbase-native-client/connection/connection-factory.h b/hbase-native-client/include/hbase/connection/connection-factory.h
similarity index 93%
rename from hbase-native-client/connection/connection-factory.h
rename to hbase-native-client/include/hbase/connection/connection-factory.h
index c4e63c2..14b7fda 100644
--- a/hbase-native-client/connection/connection-factory.h
+++ b/hbase-native-client/include/hbase/connection/connection-factory.h
@@ -26,11 +26,11 @@
 #include <memory>
 #include <string>
 
-#include "connection/pipeline.h"
-#include "connection/request.h"
-#include "connection/response.h"
-#include "connection/service.h"
-#include "security/user.h"
+#include "hbase/connection/pipeline.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/connection/service.h"
+#include "hbase/security/user.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/connection-id.h b/hbase-native-client/include/hbase/connection/connection-id.h
similarity index 97%
rename from hbase-native-client/connection/connection-id.h
rename to hbase-native-client/include/hbase/connection/connection-id.h
index 065b484..98f5b47 100644
--- a/hbase-native-client/connection/connection-id.h
+++ b/hbase-native-client/include/hbase/connection/connection-id.h
@@ -24,8 +24,8 @@
 #include <string>
 #include <utility>
 
-#include "if/HBase.pb.h"
-#include "security/user.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/security/user.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/connection-pool.h b/hbase-native-client/include/hbase/connection/connection-pool.h
similarity index 93%
rename from hbase-native-client/connection/connection-pool.h
rename to hbase-native-client/include/hbase/connection/connection-pool.h
index 9af1e7f..1198c33 100644
--- a/hbase-native-client/connection/connection-pool.h
+++ b/hbase-native-client/include/hbase/connection/connection-pool.h
@@ -25,11 +25,11 @@
 #include <mutex>
 #include <unordered_map>
 
-#include "connection/connection-factory.h"
-#include "connection/connection-id.h"
-#include "connection/rpc-connection.h"
-#include "connection/service.h"
-#include "if/HBase.pb.h"
+#include "hbase/connection/connection-factory.h"
+#include "hbase/connection/connection-id.h"
+#include "hbase/connection/rpc-connection.h"
+#include "hbase/connection/service.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/pipeline.h b/hbase-native-client/include/hbase/connection/pipeline.h
similarity index 90%
rename from hbase-native-client/connection/pipeline.h
rename to hbase-native-client/include/hbase/connection/pipeline.h
index add7fe5..63e9492 100644
--- a/hbase-native-client/connection/pipeline.h
+++ b/hbase-native-client/include/hbase/connection/pipeline.h
@@ -23,11 +23,11 @@
 
 #include <memory>
 
-#include "connection/request.h"
-#include "connection/response.h"
-#include "core/configuration.h"
-#include "serde/codec.h"
-#include "utils/user-util.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/client/configuration.h"
+#include "hbase/serde/codec.h"
+#include "hbase/utils/user-util.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/request.h b/hbase-native-client/include/hbase/connection/request.h
similarity index 100%
rename from hbase-native-client/connection/request.h
rename to hbase-native-client/include/hbase/connection/request.h
diff --git a/hbase-native-client/connection/response.h b/hbase-native-client/include/hbase/connection/response.h
similarity index 98%
rename from hbase-native-client/connection/response.h
rename to hbase-native-client/include/hbase/connection/response.h
index 38fdda0..5fe8b79 100644
--- a/hbase-native-client/connection/response.h
+++ b/hbase-native-client/include/hbase/connection/response.h
@@ -26,7 +26,7 @@
 #include <string>
 #include <utility>
 
-#include "serde/cell-scanner.h"
+#include "hbase/serde/cell-scanner.h"
 
 // Forward
 namespace google {
diff --git a/hbase-native-client/connection/rpc-client.h b/hbase-native-client/include/hbase/connection/rpc-client.h
similarity index 94%
rename from hbase-native-client/connection/rpc-client.h
rename to hbase-native-client/include/hbase/connection/rpc-client.h
index 93801d8..1189410 100644
--- a/hbase-native-client/connection/rpc-client.h
+++ b/hbase-native-client/include/hbase/connection/rpc-client.h
@@ -26,11 +26,11 @@
 #include <string>
 #include <utility>
 
-#include "connection/connection-id.h"
-#include "connection/connection-pool.h"
-#include "connection/request.h"
-#include "connection/response.h"
-#include "security/user.h"
+#include "hbase/connection/connection-id.h"
+#include "hbase/connection/connection-pool.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/security/user.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/rpc-connection.h b/hbase-native-client/include/hbase/connection/rpc-connection.h
similarity index 92%
rename from hbase-native-client/connection/rpc-connection.h
rename to hbase-native-client/include/hbase/connection/rpc-connection.h
index 9063280..cbbac63 100644
--- a/hbase-native-client/connection/rpc-connection.h
+++ b/hbase-native-client/include/hbase/connection/rpc-connection.h
@@ -22,11 +22,11 @@
 #include <mutex>
 #include <utility>
 
-#include "connection/connection-factory.h"
-#include "connection/connection-id.h"
-#include "connection/request.h"
-#include "connection/response.h"
-#include "connection/service.h"
+#include "hbase/connection/connection-factory.h"
+#include "hbase/connection/connection-id.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/connection/service.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/rpc-fault-injector-inl.h b/hbase-native-client/include/hbase/connection/rpc-fault-injector-inl.h
similarity index 100%
rename from hbase-native-client/connection/rpc-fault-injector-inl.h
rename to hbase-native-client/include/hbase/connection/rpc-fault-injector-inl.h
diff --git a/hbase-native-client/connection/rpc-fault-injector.h b/hbase-native-client/include/hbase/connection/rpc-fault-injector.h
similarity index 94%
rename from hbase-native-client/connection/rpc-fault-injector.h
rename to hbase-native-client/include/hbase/connection/rpc-fault-injector.h
index 2733b7d..1d21875 100644
--- a/hbase-native-client/connection/rpc-fault-injector.h
+++ b/hbase-native-client/include/hbase/connection/rpc-fault-injector.h
@@ -19,7 +19,7 @@
 #pragma once
 
 #include <folly/io/async/AsyncTransport.h>
-#include "connection/pipeline.h"
+#include "hbase/connection/pipeline.h"
 
 namespace hbase {
 
@@ -47,4 +47,4 @@ class RpcClientFaultInjector : public RpcFaultInjector<RpcClientFaultInjector> {
 };
 } /* namespace hbase */
 
-#include "connection/rpc-fault-injector-inl.h"
+#include "hbase/connection/rpc-fault-injector-inl.h"
diff --git a/hbase-native-client/connection/rpc-test-server-handler.h b/hbase-native-client/include/hbase/connection/rpc-test-server-handler.h
similarity index 93%
rename from hbase-native-client/connection/rpc-test-server-handler.h
rename to hbase-native-client/include/hbase/connection/rpc-test-server-handler.h
index ab0264f..ef6ed4e 100644
--- a/hbase-native-client/connection/rpc-test-server-handler.h
+++ b/hbase-native-client/include/hbase/connection/rpc-test-server-handler.h
@@ -20,9 +20,9 @@
 
 #include <wangle/channel/Handler.h>
 
-#include "connection/request.h"
-#include "connection/response.h"
-#include "serde/rpc-serde.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/serde/rpc-serde.h"
 
 using namespace hbase;
 
diff --git a/hbase-native-client/connection/rpc-test-server.h b/hbase-native-client/include/hbase/connection/rpc-test-server.h
similarity index 95%
rename from hbase-native-client/connection/rpc-test-server.h
rename to hbase-native-client/include/hbase/connection/rpc-test-server.h
index 955560e..76ab8ba 100644
--- a/hbase-native-client/connection/rpc-test-server.h
+++ b/hbase-native-client/include/hbase/connection/rpc-test-server.h
@@ -22,9 +22,9 @@
 #include <wangle/service/ExecutorFilter.h>
 #include <wangle/service/Service.h>
 
-#include "connection/request.h"
-#include "connection/response.h"
-#include "exceptions/exception.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/exceptions/exception.h"
 
 using namespace hbase;
 using namespace folly;
diff --git a/hbase-native-client/connection/sasl-handler.h b/hbase-native-client/include/hbase/connection/sasl-handler.h
similarity index 95%
rename from hbase-native-client/connection/sasl-handler.h
rename to hbase-native-client/include/hbase/connection/sasl-handler.h
index 81f4e81..bb7f294 100644
--- a/hbase-native-client/connection/sasl-handler.h
+++ b/hbase-native-client/include/hbase/connection/sasl-handler.h
@@ -27,10 +27,10 @@
 #include <string>
 #include <vector>
 
-#include "connection/sasl-util.h"
-#include "connection/service.h"
-#include "security/user.h"
-#include "serde/rpc-serde.h"
+#include "hbase/connection/sasl-util.h"
+#include "hbase/connection/service.h"
+#include "hbase/security/user.h"
+#include "hbase/serde/rpc-serde.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/sasl-util.h b/hbase-native-client/include/hbase/connection/sasl-util.h
similarity index 97%
rename from hbase-native-client/connection/sasl-util.h
rename to hbase-native-client/include/hbase/connection/sasl-util.h
index 4d58d9ee..4d236df 100644
--- a/hbase-native-client/connection/sasl-util.h
+++ b/hbase-native-client/include/hbase/connection/sasl-util.h
@@ -22,7 +22,7 @@
 #include <mutex>
 #include <string>
 
-#include "core/configuration.h"
+#include "hbase/client/configuration.h"
 
 class SaslUtil {
  public:
diff --git a/hbase-native-client/connection/service.h b/hbase-native-client/include/hbase/connection/service.h
similarity index 92%
rename from hbase-native-client/connection/service.h
rename to hbase-native-client/include/hbase/connection/service.h
index 64d4f07..a70fd6b 100644
--- a/hbase-native-client/connection/service.h
+++ b/hbase-native-client/include/hbase/connection/service.h
@@ -22,8 +22,8 @@
 
 #include <memory>
 
-#include "connection/request.h"
-#include "connection/response.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
 
 namespace hbase {
 using HBaseService = wangle::Service<std::unique_ptr<Request>, std::unique_ptr<Response>>;
diff --git a/hbase-native-client/exceptions/BUCK b/hbase-native-client/include/hbase/exceptions/BUCK
similarity index 79%
copy from hbase-native-client/exceptions/BUCK
copy to hbase-native-client/include/hbase/exceptions/BUCK
index 3d66d72..ee296ff 100644
--- a/hbase-native-client/exceptions/BUCK
+++ b/hbase-native-client/include/hbase/exceptions/BUCK
@@ -17,23 +17,12 @@
 
 cxx_library(
     name="exceptions",
+    header_namespace="hbase/exceptions",
     exported_headers=[
         "exception.h",
     ],
-    srcs=[
-        "exception.cc",
-    ],
     deps=[
         "//third-party:folly",
     ],
     compiler_flags=['-Weffc++'],
-    visibility=['//core/...', '//connection/...'],)
-cxx_test(
-    name="exception-test",
-    srcs=[
-        "exception-test.cc",
-    ],
-    deps=[
-        ":exceptions",
-    ],
-    run_test_separately=True,)
+    visibility=['//src/hbase/exceptions/...', '//include/hbase/client/...', '//include/hbase/connection/...'],)
diff --git a/hbase-native-client/exceptions/exception.h b/hbase-native-client/include/hbase/exceptions/exception.h
similarity index 100%
rename from hbase-native-client/exceptions/exception.h
rename to hbase-native-client/include/hbase/exceptions/exception.h
diff --git a/hbase-native-client/security/BUCK b/hbase-native-client/include/hbase/security/BUCK
similarity index 93%
copy from hbase-native-client/security/BUCK
copy to hbase-native-client/include/hbase/security/BUCK
index f8a5695..2e7530b 100644
--- a/hbase-native-client/security/BUCK
+++ b/hbase-native-client/include/hbase/security/BUCK
@@ -19,11 +19,11 @@
 # to a single server.
 cxx_library(
     name="security",
+    header_namespace="hbase/security",
     exported_headers=[
         "user.h",
     ],
-    srcs=[],
-    deps=["//core:conf"],
+    deps=["//src/hbase/client:conf"],
     compiler_flags=['-Weffc++'],
     visibility=[
         'PUBLIC',
diff --git a/hbase-native-client/security/user.h b/hbase-native-client/include/hbase/security/user.h
similarity index 97%
rename from hbase-native-client/security/user.h
rename to hbase-native-client/include/hbase/security/user.h
index 307fc61..c958d61 100644
--- a/hbase-native-client/security/user.h
+++ b/hbase-native-client/include/hbase/security/user.h
@@ -21,7 +21,7 @@
 #include <glog/logging.h>
 #include <mutex>
 #include <string>
-#include "core/configuration.h"
+#include "hbase/client/configuration.h"
 
 namespace hbase {
 namespace security {
diff --git a/hbase-native-client/security/BUCK b/hbase-native-client/include/hbase/serde/BUCK
similarity index 70%
copy from hbase-native-client/security/BUCK
copy to hbase-native-client/include/hbase/serde/BUCK
index f8a5695..ee8ef82 100644
--- a/hbase-native-client/security/BUCK
+++ b/hbase-native-client/include/hbase/serde/BUCK
@@ -15,15 +15,22 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# This is the library dealing with a single connection
-# to a single server.
 cxx_library(
-    name="security",
+    name="serde",
+    header_namespace="hbase/serde",
     exported_headers=[
-        "user.h",
+        "cell-scanner.h",
+        "cell-outputstream.h",
+        "codec.h",
+        "region-info.h",
+        "rpc-serde.h",
+        "server-name.h",
+        "table-name.h",
+        "zk.h",
+    ],
+    deps=[
+        "//src/hbase/if:if", "//third-party:folly", "//src/hbase/utils:utils", "//src/hbase/security:security"
     ],
-    srcs=[],
-    deps=["//core:conf"],
     compiler_flags=['-Weffc++'],
     visibility=[
         'PUBLIC',
diff --git a/hbase-native-client/serde/cell-outputstream.h b/hbase-native-client/include/hbase/serde/cell-outputstream.h
similarity index 100%
rename from hbase-native-client/serde/cell-outputstream.h
rename to hbase-native-client/include/hbase/serde/cell-outputstream.h
diff --git a/hbase-native-client/serde/cell-scanner.h b/hbase-native-client/include/hbase/serde/cell-scanner.h
similarity index 100%
rename from hbase-native-client/serde/cell-scanner.h
rename to hbase-native-client/include/hbase/serde/cell-scanner.h
diff --git a/hbase-native-client/serde/codec.h b/hbase-native-client/include/hbase/serde/codec.h
similarity index 95%
rename from hbase-native-client/serde/codec.h
rename to hbase-native-client/include/hbase/serde/codec.h
index 64807dc..adc61b2 100644
--- a/hbase-native-client/serde/codec.h
+++ b/hbase-native-client/include/hbase/serde/codec.h
@@ -22,8 +22,8 @@
 #include <folly/io/IOBuf.h>
 #include <memory>
 
-#include "serde/cell-outputstream.h"
-#include "serde/cell-scanner.h"
+#include "hbase/serde/cell-outputstream.h"
+#include "hbase/serde/cell-scanner.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/serde/region-info.h b/hbase-native-client/include/hbase/serde/region-info.h
similarity index 97%
rename from hbase-native-client/serde/region-info.h
rename to hbase-native-client/include/hbase/serde/region-info.h
index 8010042..075e092 100644
--- a/hbase-native-client/serde/region-info.h
+++ b/hbase-native-client/include/hbase/serde/region-info.h
@@ -24,7 +24,7 @@
 
 #include <string>
 
-#include "if/HBase.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 namespace pb {
diff --git a/hbase-native-client/serde/rpc-serde.h b/hbase-native-client/include/hbase/serde/rpc-serde.h
similarity index 97%
rename from hbase-native-client/serde/rpc-serde.h
rename to hbase-native-client/include/hbase/serde/rpc-serde.h
index 6941f62..7c89347 100644
--- a/hbase-native-client/serde/rpc-serde.h
+++ b/hbase-native-client/include/hbase/serde/rpc-serde.h
@@ -22,9 +22,9 @@
 #include <string>
 
 #include <folly/ExceptionWrapper.h>
-#include "if/HBase.pb.h"
-#include "serde/cell-scanner.h"
-#include "serde/codec.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/serde/cell-scanner.h"
+#include "hbase/serde/codec.h"
 
 using namespace folly;
 // Forward
diff --git a/hbase-native-client/serde/server-name.h b/hbase-native-client/include/hbase/serde/server-name.h
similarity index 97%
rename from hbase-native-client/serde/server-name.h
rename to hbase-native-client/include/hbase/serde/server-name.h
index 41e3c77..e650914 100644
--- a/hbase-native-client/serde/server-name.h
+++ b/hbase-native-client/include/hbase/serde/server-name.h
@@ -24,7 +24,7 @@
 
 #include <string>
 
-#include "if/HBase.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 namespace pb {
diff --git a/hbase-native-client/serde/table-name.h b/hbase-native-client/include/hbase/serde/table-name.h
similarity index 98%
rename from hbase-native-client/serde/table-name.h
rename to hbase-native-client/include/hbase/serde/table-name.h
index 3594802..756f2aa 100644
--- a/hbase-native-client/serde/table-name.h
+++ b/hbase-native-client/include/hbase/serde/table-name.h
@@ -25,7 +25,7 @@
 #include <string>
 #include <vector>
 
-#include "if/HBase.pb.h"
+#include "hbase/if/HBase.pb.h"
 
 namespace hbase {
 namespace pb {
diff --git a/hbase-native-client/serde/zk.h b/hbase-native-client/include/hbase/serde/zk.h
similarity index 100%
rename from hbase-native-client/serde/zk.h
rename to hbase-native-client/include/hbase/serde/zk.h
diff --git a/hbase-native-client/utils/BUCK b/hbase-native-client/include/hbase/utils/BUCK
similarity index 74%
copy from hbase-native-client/utils/BUCK
copy to hbase-native-client/include/hbase/utils/BUCK
index 96f02b8..d44e908 100644
--- a/hbase-native-client/utils/BUCK
+++ b/hbase-native-client/include/hbase/utils/BUCK
@@ -17,6 +17,7 @@
 
 cxx_library(
     name="utils",
+    header_namespace="hbase/utils",
     exported_headers=[
         "bytes-util.h",
         "connection-util.h",
@@ -27,7 +28,6 @@ cxx_library(
         "user-util.h",
         "version.h",
     ],
-    srcs=["bytes-util.cc", "connection-util.cc", "user-util.cc"],
     deps=[
         '//third-party:folly',
     ],
@@ -38,27 +38,3 @@ cxx_library(
         'PUBLIC',
     ],
     compiler_flags=['-Weffc++'],)
-cxx_test(
-    name="bytes-util-test",
-    srcs=[
-        "bytes-util-test.cc",
-    ],
-    deps=[
-        ":utils",
-    ],)
-cxx_test(
-    name="concurrent-map-test",
-    srcs=[
-        "concurrent-map-test.cc",
-    ],
-    deps=[
-        ":utils",
-    ],)
-cxx_test(
-    name="user-util-test",
-    srcs=[
-        "user-util-test.cc",
-    ],
-    deps=[
-        ":utils",
-    ],)
\ No newline at end of file
diff --git a/hbase-native-client/utils/bytes-util.h b/hbase-native-client/include/hbase/utils/bytes-util.h
similarity index 100%
rename from hbase-native-client/utils/bytes-util.h
rename to hbase-native-client/include/hbase/utils/bytes-util.h
diff --git a/hbase-native-client/utils/concurrent-map.h b/hbase-native-client/include/hbase/utils/concurrent-map.h
similarity index 100%
rename from hbase-native-client/utils/concurrent-map.h
rename to hbase-native-client/include/hbase/utils/concurrent-map.h
diff --git a/hbase-native-client/utils/connection-util.h b/hbase-native-client/include/hbase/utils/connection-util.h
similarity index 98%
rename from hbase-native-client/utils/connection-util.h
rename to hbase-native-client/include/hbase/utils/connection-util.h
index f52c2f9..b6a53e6 100644
--- a/hbase-native-client/utils/connection-util.h
+++ b/hbase-native-client/include/hbase/utils/connection-util.h
@@ -24,7 +24,7 @@
 #include <cstdlib>
 #include <memory>
 #include <vector>
-#include "utils/time-util.h"
+#include "hbase/utils/time-util.h"
 
 namespace hbase {
 class ConnectionUtils {
diff --git a/hbase-native-client/utils/optional.h b/hbase-native-client/include/hbase/utils/optional.h
similarity index 100%
rename from hbase-native-client/utils/optional.h
rename to hbase-native-client/include/hbase/utils/optional.h
diff --git a/hbase-native-client/utils/sys-util.h b/hbase-native-client/include/hbase/utils/sys-util.h
similarity index 100%
rename from hbase-native-client/utils/sys-util.h
rename to hbase-native-client/include/hbase/utils/sys-util.h
diff --git a/hbase-native-client/utils/time-util.h b/hbase-native-client/include/hbase/utils/time-util.h
similarity index 100%
rename from hbase-native-client/utils/time-util.h
rename to hbase-native-client/include/hbase/utils/time-util.h
diff --git a/hbase-native-client/utils/user-util.h b/hbase-native-client/include/hbase/utils/user-util.h
similarity index 100%
rename from hbase-native-client/utils/user-util.h
rename to hbase-native-client/include/hbase/utils/user-util.h
diff --git a/hbase-native-client/core/BUCK b/hbase-native-client/src/hbase/client/BUCK
similarity index 66%
rename from hbase-native-client/core/BUCK
rename to hbase-native-client/src/hbase/client/BUCK
index 76c836b..1a8f434 100644
--- a/hbase-native-client/core/BUCK
+++ b/hbase-native-client/src/hbase/client/BUCK
@@ -17,53 +17,7 @@
 
 # This is the main library.
 cxx_library(
-    name="core",
-    exported_headers=[
-        "async-client-scanner.h",
-        "async-connection.h",
-        "async-region-locator.h",
-        "async-rpc-retrying-caller-factory.h",
-        "async-rpc-retrying-caller.h",
-        "async-table-result-scanner.h",
-        "client.h",
-        "cell.h",
-        "hbase-macros.h",
-        "filter.h",
-        "query.h",
-        "keyvalue-codec.h",
-        "region-location.h",
-        "location-cache.h",
-        "connection-configuration.h",
-        # TODO: move this out of exported
-        # Once meta lookup works
-        "meta-utils.h",
-        "get.h",
-        "increment.h",
-        "mutation.h",
-        "put.h",
-        "delete.h",
-        "scan.h",
-        "append.h",
-        "result.h",
-        "result-scanner.h",
-        "request-converter.h",
-        "response-converter.h",
-        "table.h",
-        "async-scan-rpc-retrying-caller.h",
-        "raw-async-table.h",
-        "raw-scan-result-consumer.h",
-        "scan-result-cache.h",
-        "hbase-rpc-controller.h",
-        "time-range.h",
-        "zk-util.h",
-        "action.h",
-        "multi-response.h",
-        "region-request.h",
-        "region-result.h",
-        "row.h",
-        "server-request.h",
-        "async-batch-rpc-retrying-caller.h",
-    ],
+    name="client",
     srcs=[
         "async-client-scanner.cc",
         "async-connection.cc",
@@ -97,12 +51,13 @@ cxx_library(
         "async-batch-rpc-retrying-caller.cc",
     ],
     deps=[
-        "//exceptions:exceptions",
-        "//utils:utils",
-        "//connection:connection",
-        "//core:conf",
-        "//if:if",
-        "//serde:serde",
+        "//include/hbase/client:client",
+        "//src/hbase/exceptions:exceptions",
+        "//src/hbase/utils:utils",
+        "//src/hbase/connection:connection",
+        "//src/hbase/client:conf",
+        "//src/hbase/if:if",
+        "//src/hbase/serde:serde",
         "//third-party:folly",
         "//third-party:wangle",
         "//third-party:zookeeper_mt",
@@ -114,14 +69,12 @@ cxx_library(
 cxx_library(
     name="conf",
     exported_headers=[
-        "configuration.h",
-        "hbase-configuration-loader.h",
     ],
     srcs=[
         "configuration.cc",
         "hbase-configuration-loader.cc",
     ],
-    deps=["//utils:utils", "//third-party:folly"],
+    deps=["//include/hbase/client:conf", "//src/hbase/utils:utils", "//third-party:folly"],
     compiler_flags=['-Weffc++', '-ggdb'],
     visibility=[
         'PUBLIC',
@@ -132,8 +85,8 @@ cxx_test(
         "location-cache-test.cc",
     ],
     deps=[
-        ":core",
-        "//test-util:test-util",
+        ":client",
+        "//src/hbase/test-util:test-util",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -142,10 +95,10 @@ cxx_test(
         "location-cache-retry-test.cc",
     ],
     deps=[
-        ":core",
-        "//if:if",
-        "//serde:serde",
-        "//test-util:test-util",
+        ":client",
+        "//src/hbase/if:if",
+        "//src/hbase/serde:serde",
+        "//src/hbase/test-util:test-util",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -154,7 +107,7 @@ cxx_test(
         "cell-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -163,10 +116,10 @@ cxx_test(
         "filter-test.cc",
     ],
     deps=[
-        ":core",
-        "//if:if",
-        "//serde:serde",
-        "//test-util:test-util",
+        ":client",
+        "//src/hbase/if:if",
+        "//src/hbase/serde:serde",
+        "//src/hbase/test-util:test-util",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -175,7 +128,7 @@ cxx_test(
         "get-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -184,7 +137,7 @@ cxx_test(
         "delete-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -193,7 +146,7 @@ cxx_test(
         "increment-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -202,7 +155,7 @@ cxx_test(
         "put-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -211,7 +164,7 @@ cxx_test(
         "append-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -220,9 +173,9 @@ cxx_test(
         "async-rpc-retrying-test.cc",
     ],
     deps=[
-        ":core",
-        "//test-util:test-util",
-        "//exceptions:exceptions",
+        ":client",
+        "//src/hbase/test-util:test-util",
+        "//src/hbase/exceptions:exceptions",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -231,7 +184,7 @@ cxx_test(
         "time-range-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -240,7 +193,7 @@ cxx_test(
         "configuration-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -249,7 +202,7 @@ cxx_test(
         "hbase-configuration-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -258,7 +211,7 @@ cxx_test(
         "scan-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -267,7 +220,7 @@ cxx_test(
         "result-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -276,9 +229,9 @@ cxx_test(
         "request-converter-test.cc",
     ],
     deps=[
-        ":core",
-        "//connection:connection",
-        "//if:if",
+        ":client",
+        "//src/hbase/connection:connection",
+        "//src/hbase/if:if",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -287,10 +240,10 @@ cxx_test(
         "client-test.cc",
     ],
     deps=[
-        ":core",
-        "//if:if",
-        "//serde:serde",
-        "//test-util:test-util",
+        ":client",
+        "//src/hbase/if:if",
+        "//src/hbase/serde:serde",
+        "//src/hbase/test-util:test-util",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -299,7 +252,7 @@ cxx_test(
         "scan-result-cache-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -308,10 +261,10 @@ cxx_test(
         "scanner-test.cc",
     ],
     deps=[
-        ":core",
-        "//if:if",
-        "//serde:serde",
-        "//test-util:test-util",
+        ":client",
+        "//src/hbase/if:if",
+        "//src/hbase/serde:serde",
+        "//src/hbase/test-util:test-util",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -320,7 +273,7 @@ cxx_test(
         "zk-util-test.cc",
     ],
     deps=[
-        ":core",
+        ":client",
     ],
     run_test_separately=True,)
 cxx_test(
@@ -329,9 +282,9 @@ cxx_test(
         "async-batch-rpc-retrying-test.cc",
     ],
     deps=[
-        ":core",
-        "//test-util:test-util",
-        "//exceptions:exceptions",
+        ":client",
+        "//src/hbase/test-util:test-util",
+        "//src/hbase/exceptions:exceptions",
     ],
     run_test_separately=True,)
 cxx_binary(
@@ -339,10 +292,10 @@ cxx_binary(
     srcs=[
         "simple-client.cc",
     ],
-    deps=[":core", "//connection:connection"],)
+    deps=[":client", "//src/hbase/connection:connection"],)
 cxx_binary(
     name="load-client",
     srcs=[
         "load-client.cc",
     ],
-    deps=[":core", "//connection:connection"],)
+    deps=[":client", "//src/hbase/connection:connection"],)
diff --git a/hbase-native-client/core/append-test.cc b/hbase-native-client/src/hbase/client/append-test.cc
similarity index 96%
rename from hbase-native-client/core/append-test.cc
rename to hbase-native-client/src/hbase/client/append-test.cc
index 2216034..1af138d 100644
--- a/hbase-native-client/core/append-test.cc
+++ b/hbase-native-client/src/hbase/client/append-test.cc
@@ -19,9 +19,9 @@
 #include <glog/logging.h>
 #include <gtest/gtest.h>
 
-#include "core/append.h"
-#include "core/mutation.h"
-#include "utils/time-util.h"
+#include "hbase/client/append.h"
+#include "hbase/client/mutation.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::Append;
 using hbase::Cell;
diff --git a/hbase-native-client/core/append.cc b/hbase-native-client/src/hbase/client/append.cc
similarity index 98%
rename from hbase-native-client/core/append.cc
rename to hbase-native-client/src/hbase/client/append.cc
index 95349ae..431a398 100644
--- a/hbase-native-client/core/append.cc
+++ b/hbase-native-client/src/hbase/client/append.cc
@@ -19,7 +19,7 @@
  *
  */
 
-#include "core/append.h"
+#include "hbase/client/append.h"
 #include <folly/Conv.h>
 #include <algorithm>
 #include <limits>
diff --git a/hbase-native-client/core/async-batch-rpc-retrying-caller.cc b/hbase-native-client/src/hbase/client/async-batch-rpc-retrying-caller.cc
similarity index 99%
rename from hbase-native-client/core/async-batch-rpc-retrying-caller.cc
rename to hbase-native-client/src/hbase/client/async-batch-rpc-retrying-caller.cc
index dfbf7e7..6699b90 100644
--- a/hbase-native-client/core/async-batch-rpc-retrying-caller.cc
+++ b/hbase-native-client/src/hbase/client/async-batch-rpc-retrying-caller.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/async-batch-rpc-retrying-caller.h"
+#include "hbase/client/async-batch-rpc-retrying-caller.h"
 #include <glog/logging.h>
 #include <limits>
 
diff --git a/hbase-native-client/core/async-batch-rpc-retrying-test.cc b/hbase-native-client/src/hbase/client/async-batch-rpc-retrying-test.cc
similarity index 97%
rename from hbase-native-client/core/async-batch-rpc-retrying-test.cc
rename to hbase-native-client/src/hbase/client/async-batch-rpc-retrying-test.cc
index 00cf2b8..b0f4afb 100644
--- a/hbase-native-client/core/async-batch-rpc-retrying-test.cc
+++ b/hbase-native-client/src/hbase/client/async-batch-rpc-retrying-test.cc
@@ -29,18 +29,18 @@
 #include <functional>
 #include <string>
 
-#include "connection/rpc-client.h"
-#include "core/async-batch-rpc-retrying-caller.h"
-#include "core/async-connection.h"
-#include "core/async-rpc-retrying-caller-factory.h"
-#include "core/client.h"
-#include "core/connection-configuration.h"
-#include "core/keyvalue-codec.h"
-#include "core/region-location.h"
-#include "core/result.h"
-#include "exceptions/exception.h"
-#include "test-util/test-util.h"
-#include "utils/time-util.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/async-batch-rpc-retrying-caller.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/async-rpc-retrying-caller-factory.h"
+#include "hbase/client/client.h"
+#include "hbase/client/connection-configuration.h"
+#include "hbase/client/keyvalue-codec.h"
+#include "hbase/client/region-location.h"
+#include "hbase/client/result.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/test-util/test-util.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::AsyncRpcRetryingCallerFactory;
 using hbase::AsyncConnection;
diff --git a/hbase-native-client/core/async-client-scanner.cc b/hbase-native-client/src/hbase/client/async-client-scanner.cc
similarity index 99%
rename from hbase-native-client/core/async-client-scanner.cc
rename to hbase-native-client/src/hbase/client/async-client-scanner.cc
index 720ab25..50c01ee 100644
--- a/hbase-native-client/core/async-client-scanner.cc
+++ b/hbase-native-client/src/hbase/client/async-client-scanner.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/async-client-scanner.h"
+#include "hbase/client/async-client-scanner.h"
 
 #include <algorithm>
 #include <iterator>
diff --git a/hbase-native-client/core/async-connection.cc b/hbase-native-client/src/hbase/client/async-connection.cc
similarity index 96%
rename from hbase-native-client/core/async-connection.cc
rename to hbase-native-client/src/hbase/client/async-connection.cc
index 850fb8f..f1bdebc 100644
--- a/hbase-native-client/core/async-connection.cc
+++ b/hbase-native-client/src/hbase/client/async-connection.cc
@@ -17,8 +17,8 @@
  *
  */
 
-#include "core/async-connection.h"
-#include "core/async-rpc-retrying-caller-factory.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/async-rpc-retrying-caller-factory.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/async-rpc-retrying-caller-factory.cc b/hbase-native-client/src/hbase/client/async-rpc-retrying-caller-factory.cc
similarity index 93%
rename from hbase-native-client/core/async-rpc-retrying-caller-factory.cc
rename to hbase-native-client/src/hbase/client/async-rpc-retrying-caller-factory.cc
index 0ac9cac..42b4eac 100644
--- a/hbase-native-client/core/async-rpc-retrying-caller-factory.cc
+++ b/hbase-native-client/src/hbase/client/async-rpc-retrying-caller-factory.cc
@@ -17,6 +17,6 @@
  *
  */
 
-#include "core/async-rpc-retrying-caller-factory.h"
+#include "hbase/client/async-rpc-retrying-caller-factory.h"
 
 namespace hbase {}  // namespace hbase
diff --git a/hbase-native-client/core/async-rpc-retrying-caller.cc b/hbase-native-client/src/hbase/client/async-rpc-retrying-caller.cc
similarity index 95%
rename from hbase-native-client/core/async-rpc-retrying-caller.cc
rename to hbase-native-client/src/hbase/client/async-rpc-retrying-caller.cc
index 8e60991..4c39f05 100644
--- a/hbase-native-client/core/async-rpc-retrying-caller.cc
+++ b/hbase-native-client/src/hbase/client/async-rpc-retrying-caller.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/async-rpc-retrying-caller.h"
+#include "hbase/client/async-rpc-retrying-caller.h"
 
 #include <folly/Conv.h>
 #include <folly/ExceptionWrapper.h>
@@ -25,16 +25,16 @@
 #include <folly/Logging.h>
 #include <folly/Unit.h>
 
-#include "connection/rpc-client.h"
-#include "core/async-connection.h"
-#include "core/hbase-rpc-controller.h"
-#include "core/region-location.h"
-#include "core/result.h"
-#include "exceptions/exception.h"
-#include "if/HBase.pb.h"
-#include "utils/connection-util.h"
-#include "utils/sys-util.h"
-#include "utils/time-util.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/hbase-rpc-controller.h"
+#include "hbase/client/region-location.h"
+#include "hbase/client/result.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/utils/connection-util.h"
+#include "hbase/utils/sys-util.h"
+#include "hbase/utils/time-util.h"
 
 using folly::exception_wrapper;
 
diff --git a/hbase-native-client/core/async-rpc-retrying-test.cc b/hbase-native-client/src/hbase/client/async-rpc-retrying-test.cc
similarity index 95%
rename from hbase-native-client/core/async-rpc-retrying-test.cc
rename to hbase-native-client/src/hbase/client/async-rpc-retrying-test.cc
index 2eb82a9..6782d05 100644
--- a/hbase-native-client/core/async-rpc-retrying-test.cc
+++ b/hbase-native-client/src/hbase/client/async-rpc-retrying-test.cc
@@ -30,25 +30,25 @@
 #include <functional>
 #include <string>
 
-#include "connection/request.h"
-#include "connection/response.h"
-#include "connection/rpc-client.h"
-#include "core/async-connection.h"
-#include "core/async-rpc-retrying-caller-factory.h"
-#include "core/async-rpc-retrying-caller.h"
-#include "core/client.h"
-#include "core/connection-configuration.h"
-#include "core/hbase-rpc-controller.h"
-#include "core/keyvalue-codec.h"
-#include "core/region-location.h"
-#include "core/request-converter.h"
-#include "core/response-converter.h"
-#include "core/result.h"
-#include "exceptions/exception.h"
-#include "if/Client.pb.h"
-#include "if/HBase.pb.h"
-#include "test-util/test-util.h"
-#include "utils/time-util.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/async-rpc-retrying-caller-factory.h"
+#include "hbase/client/async-rpc-retrying-caller.h"
+#include "hbase/client/client.h"
+#include "hbase/client/connection-configuration.h"
+#include "hbase/client/hbase-rpc-controller.h"
+#include "hbase/client/keyvalue-codec.h"
+#include "hbase/client/region-location.h"
+#include "hbase/client/request-converter.h"
+#include "hbase/client/response-converter.h"
+#include "hbase/client/result.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/test-util/test-util.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::AsyncRpcRetryingCallerFactory;
 using hbase::AsyncConnection;
diff --git a/hbase-native-client/core/async-scan-rpc-retrying-caller.cc b/hbase-native-client/src/hbase/client/async-scan-rpc-retrying-caller.cc
similarity index 99%
rename from hbase-native-client/core/async-scan-rpc-retrying-caller.cc
rename to hbase-native-client/src/hbase/client/async-scan-rpc-retrying-caller.cc
index a1e8362..2189128 100644
--- a/hbase-native-client/core/async-scan-rpc-retrying-caller.cc
+++ b/hbase-native-client/src/hbase/client/async-scan-rpc-retrying-caller.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/async-scan-rpc-retrying-caller.h"
+#include "hbase/client/async-scan-rpc-retrying-caller.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/async-table-result-scanner.cc b/hbase-native-client/src/hbase/client/async-table-result-scanner.cc
similarity index 98%
rename from hbase-native-client/core/async-table-result-scanner.cc
rename to hbase-native-client/src/hbase/client/async-table-result-scanner.cc
index b1935ae..3812b3a 100644
--- a/hbase-native-client/core/async-table-result-scanner.cc
+++ b/hbase-native-client/src/hbase/client/async-table-result-scanner.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/async-table-result-scanner.h"
+#include "hbase/client/async-table-result-scanner.h"
 
 #include <vector>
 
diff --git a/hbase-native-client/core/cell-test.cc b/hbase-native-client/src/hbase/client/cell-test.cc
similarity index 99%
rename from hbase-native-client/core/cell-test.cc
rename to hbase-native-client/src/hbase/client/cell-test.cc
index 4611473..8a65aa5 100644
--- a/hbase-native-client/core/cell-test.cc
+++ b/hbase-native-client/src/hbase/client/cell-test.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/cell.h"
+#include "hbase/client/cell.h"
 
 #include <glog/logging.h>
 #include <gtest/gtest.h>
diff --git a/hbase-native-client/core/cell.cc b/hbase-native-client/src/hbase/client/cell.cc
similarity index 98%
rename from hbase-native-client/core/cell.cc
rename to hbase-native-client/src/hbase/client/cell.cc
index e475d49..da2c11f 100644
--- a/hbase-native-client/core/cell.cc
+++ b/hbase-native-client/src/hbase/client/cell.cc
@@ -17,13 +17,13 @@
  *
  */
 
-#include "core/cell.h"
+#include "hbase/client/cell.h"
 #include <climits>
 #include <limits>
 #include <stdexcept>
 
 #include "folly/Conv.h"
-#include "utils/bytes-util.h"
+#include "hbase/utils/bytes-util.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/client-test.cc b/hbase-native-client/src/hbase/client/client-test.cc
similarity index 97%
rename from hbase-native-client/core/client-test.cc
rename to hbase-native-client/src/hbase/client/client-test.cc
index 3f72880..7141047 100644
--- a/hbase-native-client/core/client-test.cc
+++ b/hbase-native-client/src/hbase/client/client-test.cc
@@ -19,21 +19,21 @@
 
 #include <gtest/gtest.h>
 
-#include "core/append.h"
-#include "core/cell.h"
-#include "core/client.h"
-#include "core/configuration.h"
-#include "core/delete.h"
-#include "core/get.h"
-#include "core/hbase-configuration-loader.h"
-#include "core/increment.h"
-#include "core/put.h"
-#include "core/result.h"
-#include "core/table.h"
-#include "exceptions/exception.h"
-#include "serde/table-name.h"
-#include "test-util/test-util.h"
-#include "utils/bytes-util.h"
+#include "hbase/client/append.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/client.h"
+#include "hbase/client/configuration.h"
+#include "hbase/client/delete.h"
+#include "hbase/client/get.h"
+#include "hbase/client/hbase-configuration-loader.h"
+#include "hbase/client/increment.h"
+#include "hbase/client/put.h"
+#include "hbase/client/result.h"
+#include "hbase/client/table.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/serde/table-name.h"
+#include "hbase/test-util/test-util.h"
+#include "hbase/utils/bytes-util.h"
 
 using hbase::Cell;
 using hbase::Configuration;
diff --git a/hbase-native-client/core/client.cc b/hbase-native-client/src/hbase/client/client.cc
similarity index 98%
rename from hbase-native-client/core/client.cc
rename to hbase-native-client/src/hbase/client/client.cc
index e23aeae..2a63c03 100644
--- a/hbase-native-client/core/client.cc
+++ b/hbase-native-client/src/hbase/client/client.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/client.h"
+#include "hbase/client/client.h"
 
 #include <glog/logging.h>
 #include <chrono>
diff --git a/hbase-native-client/core/configuration-test.cc b/hbase-native-client/src/hbase/client/configuration-test.cc
similarity index 98%
rename from hbase-native-client/core/configuration-test.cc
rename to hbase-native-client/src/hbase/client/configuration-test.cc
index abdf0c7..4201018 100644
--- a/hbase-native-client/core/configuration-test.cc
+++ b/hbase-native-client/src/hbase/client/configuration-test.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/configuration.h"
+#include "hbase/client/configuration.h"
 #include <gtest/gtest.h>
 
 using hbase::Configuration;
diff --git a/hbase-native-client/core/configuration.cc b/hbase-native-client/src/hbase/client/configuration.cc
similarity index 99%
rename from hbase-native-client/core/configuration.cc
rename to hbase-native-client/src/hbase/client/configuration.cc
index 1fd2851..d829edc 100644
--- a/hbase-native-client/core/configuration.cc
+++ b/hbase-native-client/src/hbase/client/configuration.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/configuration.h"
+#include "hbase/client/configuration.h"
 
 #include <memory>
 #include <stdexcept>
diff --git a/hbase-native-client/core/delete-test.cc b/hbase-native-client/src/hbase/client/delete-test.cc
similarity index 97%
rename from hbase-native-client/core/delete-test.cc
rename to hbase-native-client/src/hbase/client/delete-test.cc
index ec1e3a9..4af0c40 100644
--- a/hbase-native-client/core/delete-test.cc
+++ b/hbase-native-client/src/hbase/client/delete-test.cc
@@ -19,9 +19,9 @@
 #include <glog/logging.h>
 #include <gtest/gtest.h>
 
-#include "core/delete.h"
-#include "core/mutation.h"
-#include "utils/time-util.h"
+#include "hbase/client/delete.h"
+#include "hbase/client/mutation.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::Delete;
 using hbase::Cell;
diff --git a/hbase-native-client/core/delete.cc b/hbase-native-client/src/hbase/client/delete.cc
similarity index 99%
rename from hbase-native-client/core/delete.cc
rename to hbase-native-client/src/hbase/client/delete.cc
index 5f48782..eed096d 100644
--- a/hbase-native-client/core/delete.cc
+++ b/hbase-native-client/src/hbase/client/delete.cc
@@ -19,7 +19,7 @@
  *
  */
 
-#include "core/delete.h"
+#include "hbase/client/delete.h"
 #include <folly/Conv.h>
 #include <algorithm>
 #include <limits>
diff --git a/hbase-native-client/core/filter-test.cc b/hbase-native-client/src/hbase/client/filter-test.cc
similarity index 92%
rename from hbase-native-client/core/filter-test.cc
rename to hbase-native-client/src/hbase/client/filter-test.cc
index 7276dfb..8a23913 100644
--- a/hbase-native-client/core/filter-test.cc
+++ b/hbase-native-client/src/hbase/client/filter-test.cc
@@ -18,16 +18,16 @@
  */
 
 #include <gtest/gtest.h>
-#include "core/client.h"
-#include "core/configuration.h"
-#include "core/get.h"
-#include "core/put.h"
-#include "core/result.h"
-#include "core/table.h"
-#include "if/Comparator.pb.h"
-#include "if/HBase.pb.h"
-#include "serde/table-name.h"
-#include "test-util/test-util.h"
+#include "hbase/client/client.h"
+#include "hbase/client/configuration.h"
+#include "hbase/client/get.h"
+#include "hbase/client/put.h"
+#include "hbase/client/result.h"
+#include "hbase/client/table.h"
+#include "hbase/if/Comparator.pb.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/serde/table-name.h"
+#include "hbase/test-util/test-util.h"
 
 using hbase::Configuration;
 using hbase::Get;
diff --git a/hbase-native-client/core/get-test.cc b/hbase-native-client/src/hbase/client/get-test.cc
similarity index 99%
rename from hbase-native-client/core/get-test.cc
rename to hbase-native-client/src/hbase/client/get-test.cc
index 4a44a26..676d798 100644
--- a/hbase-native-client/core/get-test.cc
+++ b/hbase-native-client/src/hbase/client/get-test.cc
@@ -17,8 +17,8 @@
  *
  */
 
-#include "core/get.h"
-#include "core/cell.h"
+#include "hbase/client/get.h"
+#include "hbase/client/cell.h"
 
 #include <glog/logging.h>
 #include <gtest/gtest.h>
diff --git a/hbase-native-client/core/get.cc b/hbase-native-client/src/hbase/client/get.cc
similarity index 99%
rename from hbase-native-client/core/get.cc
rename to hbase-native-client/src/hbase/client/get.cc
index bc0d446..ba18a58 100644
--- a/hbase-native-client/core/get.cc
+++ b/hbase-native-client/src/hbase/client/get.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/get.h"
+#include "hbase/client/get.h"
 #include <algorithm>
 #include <limits>
 #include <stdexcept>
diff --git a/hbase-native-client/core/hbase-configuration-loader.cc b/hbase-native-client/src/hbase/client/hbase-configuration-loader.cc
similarity index 99%
rename from hbase-native-client/core/hbase-configuration-loader.cc
rename to hbase-native-client/src/hbase/client/hbase-configuration-loader.cc
index 4d6a3e9..98ef20e 100644
--- a/hbase-native-client/core/hbase-configuration-loader.cc
+++ b/hbase-native-client/src/hbase/client/hbase-configuration-loader.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/hbase-configuration-loader.h"
+#include "hbase/client/hbase-configuration-loader.h"
 
 #include <glog/logging.h>
 #include <boost/foreach.hpp>
diff --git a/hbase-native-client/core/hbase-configuration-test.cc b/hbase-native-client/src/hbase/client/hbase-configuration-test.cc
similarity index 99%
rename from hbase-native-client/core/hbase-configuration-test.cc
rename to hbase-native-client/src/hbase/client/hbase-configuration-test.cc
index 56b4463..173c4df 100644
--- a/hbase-native-client/core/hbase-configuration-test.cc
+++ b/hbase-native-client/src/hbase/client/hbase-configuration-test.cc
@@ -23,8 +23,8 @@
 #include <glog/logging.h>
 #include <gtest/gtest.h>
 #include <boost/filesystem.hpp>
-#include "core/configuration.h"
-#include "core/hbase-configuration-loader.h"
+#include "hbase/client/configuration.h"
+#include "hbase/client/hbase-configuration-loader.h"
 
 using namespace hbase;
 using std::experimental::nullopt;
diff --git a/hbase-native-client/core/hbase-rpc-controller.cc b/hbase-native-client/src/hbase/client/hbase-rpc-controller.cc
similarity index 94%
rename from hbase-native-client/core/hbase-rpc-controller.cc
rename to hbase-native-client/src/hbase/client/hbase-rpc-controller.cc
index bc53781..c2ae6cc 100644
--- a/hbase-native-client/core/hbase-rpc-controller.cc
+++ b/hbase-native-client/src/hbase/client/hbase-rpc-controller.cc
@@ -17,6 +17,6 @@
  *
  */
 
-#include "core/hbase-rpc-controller.h"
+#include "hbase/client/hbase-rpc-controller.h"
 
 namespace hbase {} /* namespace hbase */
diff --git a/hbase-native-client/core/increment-test.cc b/hbase-native-client/src/hbase/client/increment-test.cc
similarity index 96%
rename from hbase-native-client/core/increment-test.cc
rename to hbase-native-client/src/hbase/client/increment-test.cc
index aa9b864..3c11fbe 100644
--- a/hbase-native-client/core/increment-test.cc
+++ b/hbase-native-client/src/hbase/client/increment-test.cc
@@ -19,10 +19,10 @@
 #include <glog/logging.h>
 #include <gtest/gtest.h>
 
-#include "core/increment.h"
-#include "core/mutation.h"
-#include "core/put.h"
-#include "utils/time-util.h"
+#include "hbase/client/increment.h"
+#include "hbase/client/mutation.h"
+#include "hbase/client/put.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::Increment;
 using hbase::Increment;
diff --git a/hbase-native-client/core/increment.cc b/hbase-native-client/src/hbase/client/increment.cc
similarity index 96%
rename from hbase-native-client/core/increment.cc
rename to hbase-native-client/src/hbase/client/increment.cc
index a21a764..a8ac49a 100644
--- a/hbase-native-client/core/increment.cc
+++ b/hbase-native-client/src/hbase/client/increment.cc
@@ -19,14 +19,14 @@
  *
  */
 
-#include "core/increment.h"
+#include "hbase/client/increment.h"
 #include <folly/Conv.h>
 #include <algorithm>
 #include <limits>
 #include <stdexcept>
 #include <utility>
 
-#include "utils/bytes-util.h"
+#include "hbase/utils/bytes-util.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/keyvalue-codec.cc b/hbase-native-client/src/hbase/client/keyvalue-codec.cc
similarity index 98%
rename from hbase-native-client/core/keyvalue-codec.cc
rename to hbase-native-client/src/hbase/client/keyvalue-codec.cc
index 1b526b9..9b6e689 100644
--- a/hbase-native-client/core/keyvalue-codec.cc
+++ b/hbase-native-client/src/hbase/client/keyvalue-codec.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/keyvalue-codec.h"
+#include "hbase/client/keyvalue-codec.h"
 
 #include <string>
 
diff --git a/hbase-native-client/core/load-client.cc b/hbase-native-client/src/hbase/client/load-client.cc
similarity index 98%
rename from hbase-native-client/core/load-client.cc
rename to hbase-native-client/src/hbase/client/load-client.cc
index 8cceeef..a321845 100644
--- a/hbase-native-client/core/load-client.cc
+++ b/hbase-native-client/src/hbase/client/load-client.cc
@@ -26,12 +26,12 @@
 #include <iostream>
 #include <thread>
 
-#include "core/client.h"
-#include "core/get.h"
-#include "core/put.h"
-#include "core/table.h"
-#include "serde/table-name.h"
-#include "utils/time-util.h"
+#include "hbase/client/client.h"
+#include "hbase/client/get.h"
+#include "hbase/client/put.h"
+#include "hbase/client/table.h"
+#include "hbase/serde/table-name.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::Client;
 using hbase::Configuration;
diff --git a/hbase-native-client/core/location-cache-retry-test.cc b/hbase-native-client/src/hbase/client/location-cache-retry-test.cc
similarity index 85%
rename from hbase-native-client/core/location-cache-retry-test.cc
rename to hbase-native-client/src/hbase/client/location-cache-retry-test.cc
index f154b69..283cf85 100644
--- a/hbase-native-client/core/location-cache-retry-test.cc
+++ b/hbase-native-client/src/hbase/client/location-cache-retry-test.cc
@@ -19,22 +19,22 @@
 
 #include <gtest/gtest.h>
 
-#include "core/append.h"
-#include "core/cell.h"
-#include "core/client.h"
-#include "core/configuration.h"
-#include "core/delete.h"
-#include "core/get.h"
-#include "core/hbase-configuration-loader.h"
-#include "core/increment.h"
-#include "core/meta-utils.h"
-#include "core/put.h"
-#include "core/result.h"
-#include "core/table.h"
-#include "exceptions/exception.h"
-#include "serde/table-name.h"
-#include "test-util/test-util.h"
-#include "utils/bytes-util.h"
+#include "hbase/client/append.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/client.h"
+#include "hbase/client/configuration.h"
+#include "hbase/client/delete.h"
+#include "hbase/client/get.h"
+#include "hbase/client/hbase-configuration-loader.h"
+#include "hbase/client/increment.h"
+#include "hbase/client/meta-utils.h"
+#include "hbase/client/put.h"
+#include "hbase/client/result.h"
+#include "hbase/client/table.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/serde/table-name.h"
+#include "hbase/test-util/test-util.h"
+#include "hbase/utils/bytes-util.h"
 
 using hbase::Cell;
 using hbase::Configuration;
diff --git a/hbase-native-client/core/location-cache-test.cc b/hbase-native-client/src/hbase/client/location-cache-test.cc
similarity index 96%
rename from hbase-native-client/core/location-cache-test.cc
rename to hbase-native-client/src/hbase/client/location-cache-test.cc
index fd96ff3..af25902 100644
--- a/hbase-native-client/core/location-cache-test.cc
+++ b/hbase-native-client/src/hbase/client/location-cache-test.cc
@@ -16,17 +16,17 @@
  * limitations under the License.
  *
  */
-#include "core/location-cache.h"
+#include "hbase/client/location-cache.h"
 
 #include <folly/Memory.h>
 #include <gtest/gtest.h>
 
 #include <chrono>
 
-#include "core/keyvalue-codec.h"
-#include "if/HBase.pb.h"
-#include "serde/table-name.h"
-#include "test-util/test-util.h"
+#include "hbase/client/keyvalue-codec.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/serde/table-name.h"
+#include "hbase/test-util/test-util.h"
 
 using hbase::Cell;
 using hbase::Configuration;
diff --git a/hbase-native-client/core/location-cache.cc b/hbase-native-client/src/hbase/client/location-cache.cc
similarity index 96%
rename from hbase-native-client/core/location-cache.cc
rename to hbase-native-client/src/hbase/client/location-cache.cc
index b728d95..2be2b94 100644
--- a/hbase-native-client/core/location-cache.cc
+++ b/hbase-native-client/src/hbase/client/location-cache.cc
@@ -16,7 +16,7 @@
  * limitations under the License.
  *
  */
-#include "core/location-cache.h"
+#include "hbase/client/location-cache.h"
 
 #include <folly/Conv.h>
 #include <folly/Logging.h>
@@ -28,15 +28,15 @@
 #include <shared_mutex>
 #include <utility>
 
-#include "connection/response.h"
-#include "connection/rpc-connection.h"
-#include "core/meta-utils.h"
-#include "exceptions/exception.h"
-#include "if/Client.pb.h"
-#include "if/ZooKeeper.pb.h"
-#include "serde/region-info.h"
-#include "serde/server-name.h"
-#include "serde/zk.h"
+#include "hbase/connection/response.h"
+#include "hbase/connection/rpc-connection.h"
+#include "hbase/client/meta-utils.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/ZooKeeper.pb.h"
+#include "hbase/serde/region-info.h"
+#include "hbase/serde/server-name.h"
+#include "hbase/serde/zk.h"
 
 using hbase::pb::MetaRegionServer;
 using hbase::pb::ServerName;
diff --git a/hbase-native-client/core/meta-utils.cc b/hbase-native-client/src/hbase/client/meta-utils.cc
similarity index 92%
rename from hbase-native-client/core/meta-utils.cc
rename to hbase-native-client/src/hbase/client/meta-utils.cc
index 31349a5..338c43e 100644
--- a/hbase-native-client/core/meta-utils.cc
+++ b/hbase-native-client/src/hbase/client/meta-utils.cc
@@ -17,21 +17,21 @@
  *
  */
 
-#include "core/meta-utils.h"
+#include "hbase/client/meta-utils.h"
 
 #include <folly/Conv.h>
 #include <memory>
 #include <utility>
 #include <vector>
 
-#include "connection/request.h"
-#include "connection/response.h"
-#include "core/response-converter.h"
-#include "exceptions/exception.h"
-#include "if/Client.pb.h"
-#include "serde/region-info.h"
-#include "serde/server-name.h"
-#include "serde/table-name.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/client/response-converter.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/serde/region-info.h"
+#include "hbase/serde/server-name.h"
+#include "hbase/serde/table-name.h"
 
 using hbase::pb::TableName;
 using hbase::pb::RegionInfo;
diff --git a/hbase-native-client/core/multi-response.cc b/hbase-native-client/src/hbase/client/multi-response.cc
similarity index 97%
rename from hbase-native-client/core/multi-response.cc
rename to hbase-native-client/src/hbase/client/multi-response.cc
index a4c2108..564e356 100644
--- a/hbase-native-client/core/multi-response.cc
+++ b/hbase-native-client/src/hbase/client/multi-response.cc
@@ -17,9 +17,9 @@
  *
  */
 
-#include "core/multi-response.h"
+#include "hbase/client/multi-response.h"
 #include <glog/logging.h>
-#include "core/region-result.h"
+#include "hbase/client/region-result.h"
 
 using hbase::pb::RegionLoadStats;
 
diff --git a/hbase-native-client/core/mutation.cc b/hbase-native-client/src/hbase/client/mutation.cc
similarity index 98%
rename from hbase-native-client/core/mutation.cc
rename to hbase-native-client/src/hbase/client/mutation.cc
index 7182202..5a43b2f 100644
--- a/hbase-native-client/core/mutation.cc
+++ b/hbase-native-client/src/hbase/client/mutation.cc
@@ -19,7 +19,7 @@
  *
  */
 
-#include "core/mutation.h"
+#include "hbase/client/mutation.h"
 #include <algorithm>
 #include <limits>
 #include <stdexcept>
diff --git a/hbase-native-client/core/put-test.cc b/hbase-native-client/src/hbase/client/put-test.cc
similarity index 97%
rename from hbase-native-client/core/put-test.cc
rename to hbase-native-client/src/hbase/client/put-test.cc
index d4ed00a..0657bb6 100644
--- a/hbase-native-client/core/put-test.cc
+++ b/hbase-native-client/src/hbase/client/put-test.cc
@@ -19,9 +19,9 @@
 #include <glog/logging.h>
 #include <gtest/gtest.h>
 
-#include "core/mutation.h"
-#include "core/put.h"
-#include "utils/time-util.h"
+#include "hbase/client/mutation.h"
+#include "hbase/client/put.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::Put;
 using hbase::Cell;
diff --git a/hbase-native-client/core/put.cc b/hbase-native-client/src/hbase/client/put.cc
similarity index 98%
rename from hbase-native-client/core/put.cc
rename to hbase-native-client/src/hbase/client/put.cc
index bb20c5c..d942d3d 100644
--- a/hbase-native-client/core/put.cc
+++ b/hbase-native-client/src/hbase/client/put.cc
@@ -19,7 +19,7 @@
  *
  */
 
-#include "core/put.h"
+#include "hbase/client/put.h"
 #include <folly/Conv.h>
 #include <algorithm>
 #include <limits>
diff --git a/hbase-native-client/core/raw-async-table.cc b/hbase-native-client/src/hbase/client/raw-async-table.cc
similarity index 98%
rename from hbase-native-client/core/raw-async-table.cc
rename to hbase-native-client/src/hbase/client/raw-async-table.cc
index 409883f..96361e4 100644
--- a/hbase-native-client/core/raw-async-table.cc
+++ b/hbase-native-client/src/hbase/client/raw-async-table.cc
@@ -18,9 +18,10 @@
  */
 #include <utility>
 
-#include "core/raw-async-table.h"
-#include "core/request-converter.h"
-#include "core/response-converter.h"
+#include "hbase/client/async-batch-rpc-retrying-caller.h"
+#include "hbase/client/raw-async-table.h"
+#include "hbase/client/request-converter.h"
+#include "hbase/client/response-converter.h"
 
 using hbase::security::User;
 
diff --git a/hbase-native-client/core/region-result.cc b/hbase-native-client/src/hbase/client/region-result.cc
similarity index 98%
rename from hbase-native-client/core/region-result.cc
rename to hbase-native-client/src/hbase/client/region-result.cc
index 206c876..28c4861 100644
--- a/hbase-native-client/core/region-result.cc
+++ b/hbase-native-client/src/hbase/client/region-result.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/region-result.h"
+#include "hbase/client/region-result.h"
 #include <glog/logging.h>
 #include <stdexcept>
 
diff --git a/hbase-native-client/core/request-converter-test.cc b/hbase-native-client/src/hbase/client/request-converter-test.cc
similarity index 96%
rename from hbase-native-client/core/request-converter-test.cc
rename to hbase-native-client/src/hbase/client/request-converter-test.cc
index 6c07a19..0878519 100644
--- a/hbase-native-client/core/request-converter-test.cc
+++ b/hbase-native-client/src/hbase/client/request-converter-test.cc
@@ -17,13 +17,13 @@
  *
  */
 
-#include "core/request-converter.h"
+#include "hbase/client/request-converter.h"
 
 #include <gtest/gtest.h>
 #include <limits>
-#include "connection/request.h"
-#include "core/get.h"
-#include "core/scan.h"
+#include "hbase/connection/request.h"
+#include "hbase/client/get.h"
+#include "hbase/client/scan.h"
 
 using hbase::Get;
 using hbase::Scan;
diff --git a/hbase-native-client/core/request-converter.cc b/hbase-native-client/src/hbase/client/request-converter.cc
similarity index 99%
rename from hbase-native-client/core/request-converter.cc
rename to hbase-native-client/src/hbase/client/request-converter.cc
index f48f228..a57ac31 100644
--- a/hbase-native-client/core/request-converter.cc
+++ b/hbase-native-client/src/hbase/client/request-converter.cc
@@ -17,12 +17,12 @@
  *
  */
 
-#include "core/request-converter.h"
+#include "hbase/client/request-converter.h"
 
 #include <folly/Conv.h>
 
 #include <utility>
-#include "if/Client.pb.h"
+#include "hbase/if/Client.pb.h"
 
 using hbase::pb::GetRequest;
 using hbase::pb::MutationProto;
diff --git a/hbase-native-client/core/response-converter.cc b/hbase-native-client/src/hbase/client/response-converter.cc
similarity index 98%
rename from hbase-native-client/core/response-converter.cc
rename to hbase-native-client/src/hbase/client/response-converter.cc
index 960c487..f3b78fd 100644
--- a/hbase-native-client/core/response-converter.cc
+++ b/hbase-native-client/src/hbase/client/response-converter.cc
@@ -17,15 +17,15 @@
  *
  */
 
-#include "core/response-converter.h"
+#include "hbase/client/response-converter.h"
 #include <glog/logging.h>
 #include <stdexcept>
 #include <string>
 #include <utility>
 #include <vector>
-#include "core/cell.h"
-#include "core/multi-response.h"
-#include "exceptions/exception.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/multi-response.h"
+#include "hbase/exceptions/exception.h"
 
 using hbase::pb::GetResponse;
 using hbase::pb::MutateResponse;
diff --git a/hbase-native-client/core/result-test.cc b/hbase-native-client/src/hbase/client/result-test.cc
similarity index 99%
rename from hbase-native-client/core/result-test.cc
rename to hbase-native-client/src/hbase/client/result-test.cc
index dd60aeb..684c08d 100644
--- a/hbase-native-client/core/result-test.cc
+++ b/hbase-native-client/src/hbase/client/result-test.cc
@@ -24,8 +24,8 @@
 #include <string>
 #include <vector>
 
-#include "core/cell.h"
-#include "core/result.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/result.h"
 
 using hbase::Cell;
 using hbase::CellType;
diff --git a/hbase-native-client/core/result.cc b/hbase-native-client/src/hbase/client/result.cc
similarity index 99%
rename from hbase-native-client/core/result.cc
rename to hbase-native-client/src/hbase/client/result.cc
index 44b4c86..a2f56aa 100644
--- a/hbase-native-client/core/result.cc
+++ b/hbase-native-client/src/hbase/client/result.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/result.h"
+#include "hbase/client/result.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/core/scan-result-cache-test.cc b/hbase-native-client/src/hbase/client/scan-result-cache-test.cc
similarity index 98%
rename from hbase-native-client/core/scan-result-cache-test.cc
rename to hbase-native-client/src/hbase/client/scan-result-cache-test.cc
index 0bf83ce..4c10a05 100644
--- a/hbase-native-client/core/scan-result-cache-test.cc
+++ b/hbase-native-client/src/hbase/client/scan-result-cache-test.cc
@@ -23,9 +23,9 @@
 
 #include <vector>
 
-#include "core/cell.h"
-#include "core/result.h"
-#include "core/scan-result-cache.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/result.h"
+#include "hbase/client/scan-result-cache.h"
 
 using hbase::ScanResultCache;
 using hbase::Result;
diff --git a/hbase-native-client/core/scan-result-cache.cc b/hbase-native-client/src/hbase/client/scan-result-cache.cc
similarity index 99%
rename from hbase-native-client/core/scan-result-cache.cc
rename to hbase-native-client/src/hbase/client/scan-result-cache.cc
index 62a51e0..e74a7d6 100644
--- a/hbase-native-client/core/scan-result-cache.cc
+++ b/hbase-native-client/src/hbase/client/scan-result-cache.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/scan-result-cache.h"
+#include "hbase/client/scan-result-cache.h"
 #include <algorithm>
 #include <iterator>
 #include <limits>
diff --git a/hbase-native-client/core/scan-test.cc b/hbase-native-client/src/hbase/client/scan-test.cc
similarity index 99%
rename from hbase-native-client/core/scan-test.cc
rename to hbase-native-client/src/hbase/client/scan-test.cc
index 0ee054c..ba3a029 100644
--- a/hbase-native-client/core/scan-test.cc
+++ b/hbase-native-client/src/hbase/client/scan-test.cc
@@ -20,7 +20,7 @@
 #include <gtest/gtest.h>
 #include <limits>
 
-#include "core/scan.h"
+#include "hbase/client/scan.h"
 
 using hbase::Get;
 using hbase::Scan;
diff --git a/hbase-native-client/core/scan.cc b/hbase-native-client/src/hbase/client/scan.cc
similarity index 99%
rename from hbase-native-client/core/scan.cc
rename to hbase-native-client/src/hbase/client/scan.cc
index 6dcc51b..0cadcf0 100644
--- a/hbase-native-client/core/scan.cc
+++ b/hbase-native-client/src/hbase/client/scan.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/scan.h"
+#include "hbase/client/scan.h"
 
 #include <algorithm>
 #include <iterator>
diff --git a/hbase-native-client/core/scanner-test.cc b/hbase-native-client/src/hbase/client/scanner-test.cc
similarity index 95%
rename from hbase-native-client/core/scanner-test.cc
rename to hbase-native-client/src/hbase/client/scanner-test.cc
index 1ecbd02..8a58e34 100644
--- a/hbase-native-client/core/scanner-test.cc
+++ b/hbase-native-client/src/hbase/client/scanner-test.cc
@@ -24,23 +24,23 @@
 #include <thread>
 #include <vector>
 
-#include "core/async-client-scanner.h"
-#include "core/async-table-result-scanner.h"
-#include "core/cell.h"
-#include "core/client.h"
-#include "core/configuration.h"
-#include "core/filter.h"
-#include "core/get.h"
-#include "core/hbase-configuration-loader.h"
-#include "core/put.h"
-#include "core/result.h"
-#include "core/row.h"
-#include "core/table.h"
-#include "if/Comparator.pb.h"
-#include "if/Filter.pb.h"
-#include "serde/table-name.h"
-#include "test-util/test-util.h"
-#include "utils/time-util.h"
+#include "hbase/client/async-client-scanner.h"
+#include "hbase/client/async-table-result-scanner.h"
+#include "hbase/client/cell.h"
+#include "hbase/client/client.h"
+#include "hbase/client/configuration.h"
+#include "hbase/client/filter.h"
+#include "hbase/client/get.h"
+#include "hbase/client/hbase-configuration-loader.h"
+#include "hbase/client/put.h"
+#include "hbase/client/result.h"
+#include "hbase/client/row.h"
+#include "hbase/client/table.h"
+#include "hbase/if/Comparator.pb.h"
+#include "hbase/if/Filter.pb.h"
+#include "hbase/serde/table-name.h"
+#include "hbase/test-util/test-util.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::Cell;
 using hbase::ComparatorFactory;
diff --git a/hbase-native-client/core/simple-client.cc b/hbase-native-client/src/hbase/client/simple-client.cc
similarity index 94%
rename from hbase-native-client/core/simple-client.cc
rename to hbase-native-client/src/hbase/client/simple-client.cc
index 6730248..25f203a 100644
--- a/hbase-native-client/core/simple-client.cc
+++ b/hbase-native-client/src/hbase/client/simple-client.cc
@@ -26,16 +26,16 @@
 #include <iostream>
 #include <thread>
 
-#include "connection/rpc-client.h"
-#include "core/client.h"
-#include "core/get.h"
-#include "core/hbase-configuration-loader.h"
-#include "core/put.h"
-#include "core/scan.h"
-#include "core/table.h"
-#include "serde/server-name.h"
-#include "serde/table-name.h"
-#include "utils/time-util.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/client/client.h"
+#include "hbase/client/get.h"
+#include "hbase/client/hbase-configuration-loader.h"
+#include "hbase/client/put.h"
+#include "hbase/client/scan.h"
+#include "hbase/client/table.h"
+#include "hbase/serde/server-name.h"
+#include "hbase/serde/table-name.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::Client;
 using hbase::Configuration;
diff --git a/hbase-native-client/core/table.cc b/hbase-native-client/src/hbase/client/table.cc
similarity index 93%
rename from hbase-native-client/core/table.cc
rename to hbase-native-client/src/hbase/client/table.cc
index f93a029..e877ec8 100644
--- a/hbase-native-client/core/table.cc
+++ b/hbase-native-client/src/hbase/client/table.cc
@@ -17,21 +17,21 @@
  *
  */
 
-#include "core/table.h"
+#include "hbase/client/table.h"
 
 #include <chrono>
 #include <limits>
 #include <utility>
 #include <vector>
 
-#include "core/async-connection.h"
-#include "core/async-table-result-scanner.h"
-#include "core/request-converter.h"
-#include "core/response-converter.h"
-#include "if/Client.pb.h"
-#include "security/user.h"
-#include "serde/server-name.h"
-#include "utils/time-util.h"
+#include "hbase/client/async-connection.h"
+#include "hbase/client/async-table-result-scanner.h"
+#include "hbase/client/request-converter.h"
+#include "hbase/client/response-converter.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/security/user.h"
+#include "hbase/serde/server-name.h"
+#include "hbase/utils/time-util.h"
 
 using hbase::pb::TableName;
 using hbase::security::User;
diff --git a/hbase-native-client/core/time-range-test.cc b/hbase-native-client/src/hbase/client/time-range-test.cc
similarity index 97%
rename from hbase-native-client/core/time-range-test.cc
rename to hbase-native-client/src/hbase/client/time-range-test.cc
index 136ab54..a3db877 100644
--- a/hbase-native-client/core/time-range-test.cc
+++ b/hbase-native-client/src/hbase/client/time-range-test.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/time-range.h"
+#include "hbase/client/time-range.h"
 
 #include <glog/logging.h>
 #include <gtest/gtest.h>
diff --git a/hbase-native-client/core/time-range.cc b/hbase-native-client/src/hbase/client/time-range.cc
similarity index 98%
rename from hbase-native-client/core/time-range.cc
rename to hbase-native-client/src/hbase/client/time-range.cc
index e6b789b..b53e6f9 100644
--- a/hbase-native-client/core/time-range.cc
+++ b/hbase-native-client/src/hbase/client/time-range.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/time-range.h"
+#include "hbase/client/time-range.h"
 #include <limits>
 #include <stdexcept>
 #include <string>
diff --git a/hbase-native-client/core/zk-util-test.cc b/hbase-native-client/src/hbase/client/zk-util-test.cc
similarity index 98%
rename from hbase-native-client/core/zk-util-test.cc
rename to hbase-native-client/src/hbase/client/zk-util-test.cc
index b0cefdc..83d22fb 100644
--- a/hbase-native-client/core/zk-util-test.cc
+++ b/hbase-native-client/src/hbase/client/zk-util-test.cc
@@ -18,7 +18,7 @@
  */
 #include <gtest/gtest.h>
 
-#include "core/zk-util.h"
+#include "hbase/client/zk-util.h"
 
 using hbase::Configuration;
 using hbase::ZKUtil;
diff --git a/hbase-native-client/core/zk-util.cc b/hbase-native-client/src/hbase/client/zk-util.cc
similarity index 98%
rename from hbase-native-client/core/zk-util.cc
rename to hbase-native-client/src/hbase/client/zk-util.cc
index d29c8c3..38a0a2e 100644
--- a/hbase-native-client/core/zk-util.cc
+++ b/hbase-native-client/src/hbase/client/zk-util.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "core/zk-util.h"
+#include "hbase/client/zk-util.h"
 
 #include <folly/Conv.h>
 #include <boost/algorithm/string.hpp>
diff --git a/hbase-native-client/connection/BUCK b/hbase-native-client/src/hbase/connection/BUCK
similarity index 73%
rename from hbase-native-client/connection/BUCK
rename to hbase-native-client/src/hbase/connection/BUCK
index a87d27a..1a856fb 100644
--- a/hbase-native-client/connection/BUCK
+++ b/hbase-native-client/src/hbase/connection/BUCK
@@ -19,25 +19,6 @@
 # to a single server.
 cxx_library(
     name="connection",
-    exported_headers=[
-        "client-dispatcher.h",
-        "client-handler.h",
-        "sasl-handler.h",
-        "connection-factory.h",
-        "connection-pool.h",
-        "connection-id.h",
-        "pipeline.h",
-        "request.h",
-        "rpc-connection.h",
-        "response.h",
-        "service.h",
-        "rpc-client.h",
-        "sasl-util.h",
-        "rpc-test-server.h",
-        "rpc-test-server-handler.h",
-        "rpc-fault-injector.h",
-        "rpc-fault-injector-inl.h",
-    ],
     srcs=[
         "client-dispatcher.cc",
         "client-handler.cc",
@@ -53,19 +34,20 @@ cxx_library(
         "rpc-fault-injector.cc",
     ],
     deps=[
-        "//if:if",
-        "//utils:utils",
-        "//serde:serde",
-        "//security:security",
+        "//include/hbase/connection:connection",
+        "//src/hbase/if:if",
+        "//src/hbase/utils:utils",
+        "//src/hbase/serde:serde",
+        "//src/hbase/security:security",
         "//third-party:folly",
         "//third-party:wangle",
-        "//exceptions:exceptions",
+        "//src/hbase/exceptions:exceptions",
     ],
     compiler_flags=['-Weffc++'],
     linker_flags=['-L/usr/local/lib', '-lsasl2', '-lkrb5'],
     exported_linker_flags=['-L/usr/local/lib', '-lsasl2', '-lkrb5'],
     visibility=[
-        '//core/...',
+        '//src/hbase/client/...',
     ],)
 cxx_test(
     name="connection-pool-test",
diff --git a/hbase-native-client/connection/client-dispatcher.cc b/hbase-native-client/src/hbase/connection/client-dispatcher.cc
similarity index 96%
rename from hbase-native-client/connection/client-dispatcher.cc
rename to hbase-native-client/src/hbase/connection/client-dispatcher.cc
index fc8eb16..302ab6b 100644
--- a/hbase-native-client/connection/client-dispatcher.cc
+++ b/hbase-native-client/src/hbase/connection/client-dispatcher.cc
@@ -16,15 +16,15 @@
  * limitations under the License.
  *
  */
-#include "connection/client-dispatcher.h"
+#include "hbase/connection/client-dispatcher.h"
 
 #include <folly/ExceptionWrapper.h>
 #include <folly/Format.h>
 #include <folly/io/async/AsyncSocketException.h>
 #include <utility>
 
-#include "connection/rpc-connection.h"
-#include "exceptions/exception.h"
+#include "hbase/connection/rpc-connection.h"
+#include "hbase/exceptions/exception.h"
 
 using std::unique_ptr;
 
diff --git a/hbase-native-client/connection/client-handler.cc b/hbase-native-client/src/hbase/connection/client-handler.cc
similarity index 96%
rename from hbase-native-client/connection/client-handler.cc
rename to hbase-native-client/src/hbase/connection/client-handler.cc
index 983a68c..c963c20 100644
--- a/hbase-native-client/connection/client-handler.cc
+++ b/hbase-native-client/src/hbase/connection/client-handler.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "connection/client-handler.h"
+#include "hbase/connection/client-handler.h"
 
 #include <folly/ExceptionWrapper.h>
 #include <folly/Likely.h>
@@ -25,10 +25,10 @@
 #include <glog/logging.h>
 #include <string>
 
-#include "connection/request.h"
-#include "connection/response.h"
-#include "if/Client.pb.h"
-#include "if/RPC.pb.h"
+#include "hbase/connection/request.h"
+#include "hbase/connection/response.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/if/RPC.pb.h"
 
 using google::protobuf::Message;
 
diff --git a/hbase-native-client/connection/connection-factory.cc b/hbase-native-client/src/hbase/connection/connection-factory.cc
similarity index 92%
rename from hbase-native-client/connection/connection-factory.cc
rename to hbase-native-client/src/hbase/connection/connection-factory.cc
index 751073e..14ac22b 100644
--- a/hbase-native-client/connection/connection-factory.cc
+++ b/hbase-native-client/src/hbase/connection/connection-factory.cc
@@ -27,12 +27,12 @@
 #include <folly/SocketAddress.h>
 #include <folly/io/async/AsyncSocketException.h>
 
-#include "connection/client-dispatcher.h"
-#include "connection/connection-factory.h"
-#include "connection/pipeline.h"
-#include "connection/sasl-handler.h"
-#include "connection/service.h"
-#include "exceptions/exception.h"
+#include "hbase/connection/client-dispatcher.h"
+#include "hbase/connection/connection-factory.h"
+#include "hbase/connection/pipeline.h"
+#include "hbase/connection/sasl-handler.h"
+#include "hbase/connection/service.h"
+#include "hbase/exceptions/exception.h"
 
 using std::chrono::milliseconds;
 using std::chrono::nanoseconds;
diff --git a/hbase-native-client/connection/connection-pool-test.cc b/hbase-native-client/src/hbase/connection/connection-pool-test.cc
similarity index 96%
rename from hbase-native-client/connection/connection-pool-test.cc
rename to hbase-native-client/src/hbase/connection/connection-pool-test.cc
index 0dc8e14..5886a42 100644
--- a/hbase-native-client/connection/connection-pool-test.cc
+++ b/hbase-native-client/src/hbase/connection/connection-pool-test.cc
@@ -20,11 +20,11 @@
 #include <folly/Logging.h>
 #include <gmock/gmock.h>
 
-#include "connection/connection-factory.h"
-#include "connection/connection-id.h"
-#include "connection/connection-pool.h"
-#include "if/HBase.pb.h"
-#include "serde/server-name.h"
+#include "hbase/connection/connection-factory.h"
+#include "hbase/connection/connection-id.h"
+#include "hbase/connection/connection-pool.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/serde/server-name.h"
 
 using hbase::pb::ServerName;
 using ::testing::Return;
diff --git a/hbase-native-client/connection/connection-pool.cc b/hbase-native-client/src/hbase/connection/connection-pool.cc
similarity index 98%
rename from hbase-native-client/connection/connection-pool.cc
rename to hbase-native-client/src/hbase/connection/connection-pool.cc
index e1f6358..92e87f8 100644
--- a/hbase-native-client/connection/connection-pool.cc
+++ b/hbase-native-client/src/hbase/connection/connection-pool.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "connection/connection-pool.h"
+#include "hbase/connection/connection-pool.h"
 
 #include <folly/Conv.h>
 #include <folly/Logging.h>
diff --git a/hbase-native-client/connection/pipeline.cc b/hbase-native-client/src/hbase/connection/pipeline.cc
similarity index 94%
rename from hbase-native-client/connection/pipeline.cc
rename to hbase-native-client/src/hbase/connection/pipeline.cc
index 9c790b6..45ac0c0 100644
--- a/hbase-native-client/connection/pipeline.cc
+++ b/hbase-native-client/src/hbase/connection/pipeline.cc
@@ -16,7 +16,7 @@
  * limitations under the License.
  *
  */
-#include "connection/pipeline.h"
+#include "hbase/connection/pipeline.h"
 
 #include <folly/Logging.h>
 #include <wangle/channel/AsyncSocketHandler.h>
@@ -24,8 +24,8 @@
 #include <wangle/channel/OutputBufferingHandler.h>
 #include <wangle/codec/LengthFieldBasedFrameDecoder.h>
 
-#include "connection/client-handler.h"
-#include "connection/sasl-handler.h"
+#include "hbase/connection/client-handler.h"
+#include "hbase/connection/sasl-handler.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/request.cc b/hbase-native-client/src/hbase/connection/request.cc
similarity index 96%
rename from hbase-native-client/connection/request.cc
rename to hbase-native-client/src/hbase/connection/request.cc
index 8983726..91a6119 100644
--- a/hbase-native-client/connection/request.cc
+++ b/hbase-native-client/src/hbase/connection/request.cc
@@ -17,9 +17,9 @@
  *
  */
 
-#include "connection/request.h"
+#include "hbase/connection/request.h"
 
-#include "if/Client.pb.h"
+#include "hbase/if/Client.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/rpc-client.cc b/hbase-native-client/src/hbase/connection/rpc-client.cc
similarity index 98%
rename from hbase-native-client/connection/rpc-client.cc
rename to hbase-native-client/src/hbase/connection/rpc-client.cc
index 51c9c63..d73829e 100644
--- a/hbase-native-client/connection/rpc-client.cc
+++ b/hbase-native-client/src/hbase/connection/rpc-client.cc
@@ -17,14 +17,14 @@
  *
  */
 
-#include "connection/rpc-client.h"
+#include "hbase/connection/rpc-client.h"
 
 #include <folly/Format.h>
 #include <folly/Logging.h>
 #include <folly/futures/Future.h>
 #include <unistd.h>
 #include <wangle/concurrent/IOThreadPoolExecutor.h>
-#include "exceptions/exception.h"
+#include "hbase/exceptions/exception.h"
 
 using hbase::security::User;
 using std::chrono::nanoseconds;
diff --git a/hbase-native-client/connection/rpc-fault-injector.cc b/hbase-native-client/src/hbase/connection/rpc-fault-injector.cc
similarity index 94%
rename from hbase-native-client/connection/rpc-fault-injector.cc
rename to hbase-native-client/src/hbase/connection/rpc-fault-injector.cc
index 16e2034..202b21d 100644
--- a/hbase-native-client/connection/rpc-fault-injector.cc
+++ b/hbase-native-client/src/hbase/connection/rpc-fault-injector.cc
@@ -16,6 +16,6 @@
  * limitations under the License.
  *
  */
-#include "rpc-fault-injector.h"
+#include "hbase/connection/rpc-fault-injector.h"
 
 namespace hbase {} /* namespace hbase */
diff --git a/hbase-native-client/connection/rpc-test-server-handler.cc b/hbase-native-client/src/hbase/connection/rpc-test-server-handler.cc
similarity index 96%
rename from hbase-native-client/connection/rpc-test-server-handler.cc
rename to hbase-native-client/src/hbase/connection/rpc-test-server-handler.cc
index 8e405ef..b371ba9 100644
--- a/hbase-native-client/connection/rpc-test-server-handler.cc
+++ b/hbase-native-client/src/hbase/connection/rpc-test-server-handler.cc
@@ -17,9 +17,9 @@
  *
  */
 
-#include "connection/rpc-test-server-handler.h"
-#include "if/RPC.pb.h"
-#include "if/test.pb.h"
+#include "hbase/connection/rpc-test-server-handler.h"
+#include "hbase/if/RPC.pb.h"
+#include "hbase/if/test.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/rpc-test-server.cc b/hbase-native-client/src/hbase/connection/rpc-test-server.cc
similarity index 96%
rename from hbase-native-client/connection/rpc-test-server.cc
rename to hbase-native-client/src/hbase/connection/rpc-test-server.cc
index 157ea71..337266e 100644
--- a/hbase-native-client/connection/rpc-test-server.cc
+++ b/hbase-native-client/src/hbase/connection/rpc-test-server.cc
@@ -22,9 +22,9 @@
 #include <wangle/codec/LengthFieldPrepender.h>
 #include <wangle/service/ServerDispatcher.h>
 
-#include "connection/rpc-test-server-handler.h"
-#include "connection/rpc-test-server.h"
-#include "if/test.pb.h"
+#include "hbase/connection/rpc-test-server-handler.h"
+#include "hbase/connection/rpc-test-server.h"
+#include "hbase/if/test.pb.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/connection/rpc-test.cc b/hbase-native-client/src/hbase/connection/rpc-test.cc
similarity index 97%
rename from hbase-native-client/connection/rpc-test.cc
rename to hbase-native-client/src/hbase/connection/rpc-test.cc
index 8624e72..64f8f99 100644
--- a/hbase-native-client/connection/rpc-test.cc
+++ b/hbase-native-client/src/hbase/connection/rpc-test.cc
@@ -32,12 +32,12 @@
 #include <boost/thread.hpp>
 #include <chrono>
 
-#include "connection/rpc-client.h"
-#include "exceptions/exception.h"
-#include "if/test.pb.h"
-#include "rpc-test-server.h"
-#include "security/user.h"
-#include "serde/rpc-serde.h"
+#include "hbase/connection/rpc-client.h"
+#include "hbase/exceptions/exception.h"
+#include "hbase/if/test.pb.h"
+#include "hbase/connection/rpc-test-server.h"
+#include "hbase/security/user.h"
+#include "hbase/serde/rpc-serde.h"
 
 using namespace wangle;
 using namespace folly;
diff --git a/hbase-native-client/connection/sasl-handler.cc b/hbase-native-client/src/hbase/connection/sasl-handler.cc
similarity index 98%
rename from hbase-native-client/connection/sasl-handler.cc
rename to hbase-native-client/src/hbase/connection/sasl-handler.cc
index 9afe1e2..242665f 100644
--- a/hbase-native-client/connection/sasl-handler.cc
+++ b/hbase-native-client/src/hbase/connection/sasl-handler.cc
@@ -16,7 +16,7 @@
  * limitations under the License.
  *
  */
-#include "connection/sasl-handler.h"
+#include "hbase/connection/sasl-handler.h"
 
 #include <glog/logging.h>
 #include <sasl/sasl.h>
@@ -33,8 +33,8 @@
 #include <string>
 #include <utility>
 
-#include "connection/service.h"
-#include "security/user.h"
+#include "hbase/connection/service.h"
+#include "hbase/security/user.h"
 using hbase::security::User;
 
 using std::chrono::nanoseconds;
diff --git a/hbase-native-client/connection/sasl-util.cc b/hbase-native-client/src/hbase/connection/sasl-util.cc
similarity index 98%
rename from hbase-native-client/connection/sasl-util.cc
rename to hbase-native-client/src/hbase/connection/sasl-util.cc
index ecaf015..7e7403e 100644
--- a/hbase-native-client/connection/sasl-util.cc
+++ b/hbase-native-client/src/hbase/connection/sasl-util.cc
@@ -16,7 +16,7 @@
  * limitations under the License.
  *
  */
-#include "connection/sasl-util.h"
+#include "hbase/connection/sasl-util.h"
 
 #include <glog/logging.h>
 #include <sasl/sasl.h>
diff --git a/hbase-native-client/exceptions/BUCK b/hbase-native-client/src/hbase/exceptions/BUCK
similarity index 89%
rename from hbase-native-client/exceptions/BUCK
rename to hbase-native-client/src/hbase/exceptions/BUCK
index 3d66d72..00ed344 100644
--- a/hbase-native-client/exceptions/BUCK
+++ b/hbase-native-client/src/hbase/exceptions/BUCK
@@ -17,17 +17,15 @@
 
 cxx_library(
     name="exceptions",
-    exported_headers=[
-        "exception.h",
-    ],
     srcs=[
         "exception.cc",
     ],
     deps=[
+        "//include/hbase/exceptions:exceptions",
         "//third-party:folly",
     ],
     compiler_flags=['-Weffc++'],
-    visibility=['//core/...', '//connection/...'],)
+    visibility=['//src/hbase/client/...', '//src/hbase/connection/...'],)
 cxx_test(
     name="exception-test",
     srcs=[
diff --git a/hbase-native-client/exceptions/exception-test.cc b/hbase-native-client/src/hbase/exceptions/exception-test.cc
similarity index 98%
rename from hbase-native-client/exceptions/exception-test.cc
rename to hbase-native-client/src/hbase/exceptions/exception-test.cc
index 583240e..e28f084 100644
--- a/hbase-native-client/exceptions/exception-test.cc
+++ b/hbase-native-client/src/hbase/exceptions/exception-test.cc
@@ -18,7 +18,7 @@
  */
 #include <gtest/gtest.h>
 
-#include "exceptions/exception.h"
+#include "hbase/exceptions/exception.h"
 
 #include "folly/ExceptionWrapper.h"
 
diff --git a/hbase-native-client/exceptions/exception.cc b/hbase-native-client/src/hbase/exceptions/exception.cc
similarity index 99%
rename from hbase-native-client/exceptions/exception.cc
rename to hbase-native-client/src/hbase/exceptions/exception.cc
index c25acb4..91ff818 100644
--- a/hbase-native-client/exceptions/exception.cc
+++ b/hbase-native-client/src/hbase/exceptions/exception.cc
@@ -16,7 +16,7 @@
  * limitations under the License.
  *
  */
-#include "exceptions/exception.h"
+#include "hbase/exceptions/exception.h"
 
 namespace hbase {
 const std::vector<const char*> ExceptionUtil::kAllDoNotRetryIOExceptions = {
diff --git a/hbase-native-client/if/AccessControl.proto b/hbase-native-client/src/hbase/if/AccessControl.proto
similarity index 100%
rename from hbase-native-client/if/AccessControl.proto
rename to hbase-native-client/src/hbase/if/AccessControl.proto
diff --git a/hbase-native-client/if/Admin.proto b/hbase-native-client/src/hbase/if/Admin.proto
similarity index 100%
rename from hbase-native-client/if/Admin.proto
rename to hbase-native-client/src/hbase/if/Admin.proto
diff --git a/hbase-native-client/if/Aggregate.proto b/hbase-native-client/src/hbase/if/Aggregate.proto
similarity index 100%
rename from hbase-native-client/if/Aggregate.proto
rename to hbase-native-client/src/hbase/if/Aggregate.proto
diff --git a/hbase-native-client/if/Authentication.proto b/hbase-native-client/src/hbase/if/Authentication.proto
similarity index 100%
rename from hbase-native-client/if/Authentication.proto
rename to hbase-native-client/src/hbase/if/Authentication.proto
diff --git a/hbase-native-client/if/BUCK b/hbase-native-client/src/hbase/if/BUCK
similarity index 97%
rename from hbase-native-client/if/BUCK
rename to hbase-native-client/src/hbase/if/BUCK
index 1a9721d..c8d51f2 100644
--- a/hbase-native-client/if/BUCK
+++ b/hbase-native-client/src/hbase/if/BUCK
@@ -41,6 +41,7 @@ for cc_filename in CC_FILENAMES:
         out=cc_filename, )
 
 cxx_library(name='if',
+            header_namespace="hbase/if",
             exported_headers=[':' + x for x in HEADER_FILENAMES],
             srcs=[':' + x for x in CC_FILENAMES],
             deps=['//third-party:protobuf'],
diff --git a/hbase-native-client/if/Cell.proto b/hbase-native-client/src/hbase/if/Cell.proto
similarity index 100%
rename from hbase-native-client/if/Cell.proto
rename to hbase-native-client/src/hbase/if/Cell.proto
diff --git a/hbase-native-client/if/Client.proto b/hbase-native-client/src/hbase/if/Client.proto
similarity index 100%
rename from hbase-native-client/if/Client.proto
rename to hbase-native-client/src/hbase/if/Client.proto
diff --git a/hbase-native-client/if/ClusterId.proto b/hbase-native-client/src/hbase/if/ClusterId.proto
similarity index 100%
rename from hbase-native-client/if/ClusterId.proto
rename to hbase-native-client/src/hbase/if/ClusterId.proto
diff --git a/hbase-native-client/if/ClusterStatus.proto b/hbase-native-client/src/hbase/if/ClusterStatus.proto
similarity index 100%
rename from hbase-native-client/if/ClusterStatus.proto
rename to hbase-native-client/src/hbase/if/ClusterStatus.proto
diff --git a/hbase-native-client/if/Comparator.proto b/hbase-native-client/src/hbase/if/Comparator.proto
similarity index 100%
rename from hbase-native-client/if/Comparator.proto
rename to hbase-native-client/src/hbase/if/Comparator.proto
diff --git a/hbase-native-client/if/Encryption.proto b/hbase-native-client/src/hbase/if/Encryption.proto
similarity index 100%
rename from hbase-native-client/if/Encryption.proto
rename to hbase-native-client/src/hbase/if/Encryption.proto
diff --git a/hbase-native-client/if/ErrorHandling.proto b/hbase-native-client/src/hbase/if/ErrorHandling.proto
similarity index 100%
rename from hbase-native-client/if/ErrorHandling.proto
rename to hbase-native-client/src/hbase/if/ErrorHandling.proto
diff --git a/hbase-native-client/if/FS.proto b/hbase-native-client/src/hbase/if/FS.proto
similarity index 100%
rename from hbase-native-client/if/FS.proto
rename to hbase-native-client/src/hbase/if/FS.proto
diff --git a/hbase-native-client/if/Filter.proto b/hbase-native-client/src/hbase/if/Filter.proto
similarity index 100%
rename from hbase-native-client/if/Filter.proto
rename to hbase-native-client/src/hbase/if/Filter.proto
diff --git a/hbase-native-client/if/HBase.proto b/hbase-native-client/src/hbase/if/HBase.proto
similarity index 100%
rename from hbase-native-client/if/HBase.proto
rename to hbase-native-client/src/hbase/if/HBase.proto
diff --git a/hbase-native-client/if/HFile.proto b/hbase-native-client/src/hbase/if/HFile.proto
similarity index 100%
rename from hbase-native-client/if/HFile.proto
rename to hbase-native-client/src/hbase/if/HFile.proto
diff --git a/hbase-native-client/if/LoadBalancer.proto b/hbase-native-client/src/hbase/if/LoadBalancer.proto
similarity index 100%
rename from hbase-native-client/if/LoadBalancer.proto
rename to hbase-native-client/src/hbase/if/LoadBalancer.proto
diff --git a/hbase-native-client/if/MapReduce.proto b/hbase-native-client/src/hbase/if/MapReduce.proto
similarity index 100%
rename from hbase-native-client/if/MapReduce.proto
rename to hbase-native-client/src/hbase/if/MapReduce.proto
diff --git a/hbase-native-client/if/Master.proto b/hbase-native-client/src/hbase/if/Master.proto
similarity index 100%
rename from hbase-native-client/if/Master.proto
rename to hbase-native-client/src/hbase/if/Master.proto
diff --git a/hbase-native-client/if/MasterProcedure.proto b/hbase-native-client/src/hbase/if/MasterProcedure.proto
similarity index 100%
rename from hbase-native-client/if/MasterProcedure.proto
rename to hbase-native-client/src/hbase/if/MasterProcedure.proto
diff --git a/hbase-native-client/if/MultiRowMutation.proto b/hbase-native-client/src/hbase/if/MultiRowMutation.proto
similarity index 100%
rename from hbase-native-client/if/MultiRowMutation.proto
rename to hbase-native-client/src/hbase/if/MultiRowMutation.proto
diff --git a/hbase-native-client/if/Procedure.proto b/hbase-native-client/src/hbase/if/Procedure.proto
similarity index 100%
rename from hbase-native-client/if/Procedure.proto
rename to hbase-native-client/src/hbase/if/Procedure.proto
diff --git a/hbase-native-client/if/Quota.proto b/hbase-native-client/src/hbase/if/Quota.proto
similarity index 100%
rename from hbase-native-client/if/Quota.proto
rename to hbase-native-client/src/hbase/if/Quota.proto
diff --git a/hbase-native-client/if/RPC.proto b/hbase-native-client/src/hbase/if/RPC.proto
similarity index 100%
rename from hbase-native-client/if/RPC.proto
rename to hbase-native-client/src/hbase/if/RPC.proto
diff --git a/hbase-native-client/if/RSGroup.proto b/hbase-native-client/src/hbase/if/RSGroup.proto
similarity index 100%
rename from hbase-native-client/if/RSGroup.proto
rename to hbase-native-client/src/hbase/if/RSGroup.proto
diff --git a/hbase-native-client/if/RSGroupAdmin.proto b/hbase-native-client/src/hbase/if/RSGroupAdmin.proto
similarity index 100%
rename from hbase-native-client/if/RSGroupAdmin.proto
rename to hbase-native-client/src/hbase/if/RSGroupAdmin.proto
diff --git a/hbase-native-client/if/RegionNormalizer.proto b/hbase-native-client/src/hbase/if/RegionNormalizer.proto
similarity index 100%
rename from hbase-native-client/if/RegionNormalizer.proto
rename to hbase-native-client/src/hbase/if/RegionNormalizer.proto
diff --git a/hbase-native-client/if/RegionServerStatus.proto b/hbase-native-client/src/hbase/if/RegionServerStatus.proto
similarity index 100%
rename from hbase-native-client/if/RegionServerStatus.proto
rename to hbase-native-client/src/hbase/if/RegionServerStatus.proto
diff --git a/hbase-native-client/if/RowProcessor.proto b/hbase-native-client/src/hbase/if/RowProcessor.proto
similarity index 100%
rename from hbase-native-client/if/RowProcessor.proto
rename to hbase-native-client/src/hbase/if/RowProcessor.proto
diff --git a/hbase-native-client/if/SecureBulkLoad.proto b/hbase-native-client/src/hbase/if/SecureBulkLoad.proto
similarity index 100%
rename from hbase-native-client/if/SecureBulkLoad.proto
rename to hbase-native-client/src/hbase/if/SecureBulkLoad.proto
diff --git a/hbase-native-client/if/Snapshot.proto b/hbase-native-client/src/hbase/if/Snapshot.proto
similarity index 100%
rename from hbase-native-client/if/Snapshot.proto
rename to hbase-native-client/src/hbase/if/Snapshot.proto
diff --git a/hbase-native-client/if/Tracing.proto b/hbase-native-client/src/hbase/if/Tracing.proto
similarity index 100%
rename from hbase-native-client/if/Tracing.proto
rename to hbase-native-client/src/hbase/if/Tracing.proto
diff --git a/hbase-native-client/if/VisibilityLabels.proto b/hbase-native-client/src/hbase/if/VisibilityLabels.proto
similarity index 100%
rename from hbase-native-client/if/VisibilityLabels.proto
rename to hbase-native-client/src/hbase/if/VisibilityLabels.proto
diff --git a/hbase-native-client/if/WAL.proto b/hbase-native-client/src/hbase/if/WAL.proto
similarity index 100%
rename from hbase-native-client/if/WAL.proto
rename to hbase-native-client/src/hbase/if/WAL.proto
diff --git a/hbase-native-client/if/ZooKeeper.proto b/hbase-native-client/src/hbase/if/ZooKeeper.proto
similarity index 100%
rename from hbase-native-client/if/ZooKeeper.proto
rename to hbase-native-client/src/hbase/if/ZooKeeper.proto
diff --git a/hbase-native-client/if/test.proto b/hbase-native-client/src/hbase/if/test.proto
similarity index 100%
rename from hbase-native-client/if/test.proto
rename to hbase-native-client/src/hbase/if/test.proto
diff --git a/hbase-native-client/if/test_rpc_service.proto b/hbase-native-client/src/hbase/if/test_rpc_service.proto
similarity index 100%
rename from hbase-native-client/if/test_rpc_service.proto
rename to hbase-native-client/src/hbase/if/test_rpc_service.proto
diff --git a/hbase-native-client/security/BUCK b/hbase-native-client/src/hbase/security/BUCK
similarity index 92%
rename from hbase-native-client/security/BUCK
rename to hbase-native-client/src/hbase/security/BUCK
index f8a5695..c329f30 100644
--- a/hbase-native-client/security/BUCK
+++ b/hbase-native-client/src/hbase/security/BUCK
@@ -19,11 +19,8 @@
 # to a single server.
 cxx_library(
     name="security",
-    exported_headers=[
-        "user.h",
-    ],
     srcs=[],
-    deps=["//core:conf"],
+    deps=["//include/hbase/security:security", "//src/hbase/client:conf"],
     compiler_flags=['-Weffc++'],
     visibility=[
         'PUBLIC',
diff --git a/hbase-native-client/serde/BUCK b/hbase-native-client/src/hbase/serde/BUCK
similarity index 86%
rename from hbase-native-client/serde/BUCK
rename to hbase-native-client/src/hbase/serde/BUCK
index a765884..6b39e0b 100644
--- a/hbase-native-client/serde/BUCK
+++ b/hbase-native-client/src/hbase/serde/BUCK
@@ -17,22 +17,12 @@
 
 cxx_library(
     name="serde",
-    exported_headers=[
-        "cell-scanner.h",
-        "cell-outputstream.h",
-        "codec.h",
-        "region-info.h",
-        "rpc-serde.h",
-        "server-name.h",
-        "table-name.h",
-        "zk.h",
-    ],
     srcs=[
         "rpc-serde.cc",
         "zk.cc",
     ],
     deps=[
-        "//if:if", "//third-party:folly", "//utils:utils", "//security:security"
+        "//include/hbase/serde:serde", "//src/hbase/if:if", "//third-party:folly", "//src/hbase/utils:utils", "//src/hbase/security:security"
     ],
     tests=[
         ":client-deserializer-test",
diff --git a/hbase-native-client/serde/client-deserializer-test.cc b/hbase-native-client/src/hbase/serde/client-deserializer-test.cc
similarity index 96%
rename from hbase-native-client/serde/client-deserializer-test.cc
rename to hbase-native-client/src/hbase/serde/client-deserializer-test.cc
index 1856047..3e4c42b 100644
--- a/hbase-native-client/serde/client-deserializer-test.cc
+++ b/hbase-native-client/src/hbase/serde/client-deserializer-test.cc
@@ -19,8 +19,8 @@
 #include <folly/io/IOBuf.h>
 #include <gtest/gtest.h>
 
-#include "if/Client.pb.h"
-#include "rpc-serde.h"
+#include "hbase/if/Client.pb.h"
+#include "hbase/serde/rpc-serde.h"
 
 using namespace hbase;
 using folly::IOBuf;
diff --git a/hbase-native-client/serde/client-serializer-test.cc b/hbase-native-client/src/hbase/serde/client-serializer-test.cc
similarity index 96%
rename from hbase-native-client/serde/client-serializer-test.cc
rename to hbase-native-client/src/hbase/serde/client-serializer-test.cc
index 306f2c2..8279caa 100644
--- a/hbase-native-client/serde/client-serializer-test.cc
+++ b/hbase-native-client/src/hbase/serde/client-serializer-test.cc
@@ -22,9 +22,9 @@
 
 #include <string>
 
-#include "if/HBase.pb.h"
-#include "if/RPC.pb.h"
-#include "rpc-serde.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/if/RPC.pb.h"
+#include "hbase/serde/rpc-serde.h"
 
 using namespace hbase;
 using namespace hbase::pb;
diff --git a/hbase-native-client/serde/region-info-deserializer-test.cc b/hbase-native-client/src/hbase/serde/region-info-deserializer-test.cc
similarity index 93%
rename from hbase-native-client/serde/region-info-deserializer-test.cc
rename to hbase-native-client/src/hbase/serde/region-info-deserializer-test.cc
index 5cb8482..84219d8 100644
--- a/hbase-native-client/serde/region-info-deserializer-test.cc
+++ b/hbase-native-client/src/hbase/serde/region-info-deserializer-test.cc
@@ -17,14 +17,14 @@
  *
  */
 
-#include "serde/region-info.h"
+#include "hbase/serde/region-info.h"
 
 #include <gtest/gtest.h>
 
 #include <string>
 
-#include "if/HBase.pb.h"
-#include "serde/table-name.h"
+#include "hbase/if/HBase.pb.h"
+#include "hbase/serde/table-name.h"
 
 using std::string;
 using hbase::pb::RegionInfo;
diff --git a/hbase-native-client/serde/rpc-serde.cc b/hbase-native-client/src/hbase/serde/rpc-serde.cc
similarity index 98%
rename from hbase-native-client/serde/rpc-serde.cc
rename to hbase-native-client/src/hbase/serde/rpc-serde.cc
index 70a57e8..5f2920d 100644
--- a/hbase-native-client/serde/rpc-serde.cc
+++ b/hbase-native-client/src/hbase/serde/rpc-serde.cc
@@ -27,9 +27,9 @@
 
 #include <utility>
 
-#include "if/RPC.pb.h"
-#include "rpc-serde.h"
-#include "utils/version.h"
+#include "hbase/if/RPC.pb.h"
+#include "hbase/serde/rpc-serde.h"
+#include "hbase/utils/version.h"
 
 using folly::IOBuf;
 using folly::io::RWPrivateCursor;
diff --git a/hbase-native-client/serde/server-name-test.cc b/hbase-native-client/src/hbase/serde/server-name-test.cc
similarity index 97%
rename from hbase-native-client/serde/server-name-test.cc
rename to hbase-native-client/src/hbase/serde/server-name-test.cc
index 87c493a..12d3287 100644
--- a/hbase-native-client/serde/server-name-test.cc
+++ b/hbase-native-client/src/hbase/serde/server-name-test.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "serde/server-name.h"
+#include "hbase/serde/server-name.h"
 
 #include <gtest/gtest.h>
 #include <string>
diff --git a/hbase-native-client/serde/table-name-test.cc b/hbase-native-client/src/hbase/serde/table-name-test.cc
similarity index 97%
rename from hbase-native-client/serde/table-name-test.cc
rename to hbase-native-client/src/hbase/serde/table-name-test.cc
index 877d522..77bd6c2 100644
--- a/hbase-native-client/serde/table-name-test.cc
+++ b/hbase-native-client/src/hbase/serde/table-name-test.cc
@@ -22,7 +22,7 @@
 
 #include <string>
 
-#include "serde/table-name.h"
+#include "hbase/serde/table-name.h"
 
 using namespace hbase;
 using hbase::pb::TableName;
diff --git a/hbase-native-client/serde/zk-deserializer-test.cc b/hbase-native-client/src/hbase/serde/zk-deserializer-test.cc
similarity index 98%
rename from hbase-native-client/serde/zk-deserializer-test.cc
rename to hbase-native-client/src/hbase/serde/zk-deserializer-test.cc
index f07eecf..141efce 100644
--- a/hbase-native-client/serde/zk-deserializer-test.cc
+++ b/hbase-native-client/src/hbase/serde/zk-deserializer-test.cc
@@ -17,14 +17,14 @@
  *
  */
 
-#include "serde/zk.h"
+#include "hbase/serde/zk.h"
 
 #include <folly/Logging.h>
 #include <folly/io/Cursor.h>
 #include <folly/io/IOBuf.h>
 #include <gtest/gtest.h>
 
-#include "if/ZooKeeper.pb.h"
+#include "hbase/if/ZooKeeper.pb.h"
 
 using namespace hbase;
 using namespace hbase::pb;
diff --git a/hbase-native-client/serde/zk.cc b/hbase-native-client/src/hbase/serde/zk.cc
similarity index 98%
rename from hbase-native-client/serde/zk.cc
rename to hbase-native-client/src/hbase/serde/zk.cc
index a71eb87..b962cc5 100644
--- a/hbase-native-client/serde/zk.cc
+++ b/hbase-native-client/src/hbase/serde/zk.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "serde/zk.h"
+#include "hbase/serde/zk.h"
 
 #include <folly/io/Cursor.h>
 #include <folly/io/IOBuf.h>
diff --git a/hbase-native-client/test-util/BUCK b/hbase-native-client/src/hbase/test-util/BUCK
similarity index 96%
rename from hbase-native-client/test-util/BUCK
rename to hbase-native-client/src/hbase/test-util/BUCK
index 7c92841..f1aedab 100644
--- a/hbase-native-client/test-util/BUCK
+++ b/hbase-native-client/src/hbase/test-util/BUCK
@@ -18,11 +18,12 @@ import os
 
 cxx_library(
     name="test-util",
+    header_namespace="hbase/test-util",
     exported_headers=["test-util.h", "mini-cluster.h"],
     srcs=["test-util.cc", "mini-cluster.cc"],
     deps=[
         "//third-party:folly",
-        "//core:core",
+        "//src/hbase/client:client",
     ],
     preprocessor_flags=[
         '-I' + os.environ['JAVA_HOME'] + '/include',
diff --git a/hbase-native-client/test-util/mini-cluster.cc b/hbase-native-client/src/hbase/test-util/mini-cluster.cc
similarity index 99%
rename from hbase-native-client/test-util/mini-cluster.cc
rename to hbase-native-client/src/hbase/test-util/mini-cluster.cc
index 9dd2f12..1e491a2 100644
--- a/hbase-native-client/test-util/mini-cluster.cc
+++ b/hbase-native-client/src/hbase/test-util/mini-cluster.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "test-util/mini-cluster.h"
+#include "hbase/test-util/mini-cluster.h"
 #include <fcntl.h>
 #include <glog/logging.h>
 #include <boost/filesystem/fstream.hpp>
diff --git a/hbase-native-client/test-util/mini-cluster.h b/hbase-native-client/src/hbase/test-util/mini-cluster.h
similarity index 100%
rename from hbase-native-client/test-util/mini-cluster.h
rename to hbase-native-client/src/hbase/test-util/mini-cluster.h
diff --git a/hbase-native-client/test-util/test-util.cc b/hbase-native-client/src/hbase/test-util/test-util.cc
similarity index 97%
rename from hbase-native-client/test-util/test-util.cc
rename to hbase-native-client/src/hbase/test-util/test-util.cc
index ea18b84..ebaf701 100644
--- a/hbase-native-client/test-util/test-util.cc
+++ b/hbase-native-client/src/hbase/test-util/test-util.cc
@@ -17,12 +17,12 @@
  *
  */
 
-#include "test-util/test-util.h"
+#include "hbase/test-util/test-util.h"
 #include <string.h>
 
 #include <folly/Format.h>
 
-#include "core/zk-util.h"
+#include "hbase/client/zk-util.h"
 
 using hbase::TestUtil;
 using folly::Random;
diff --git a/hbase-native-client/test-util/test-util.h b/hbase-native-client/src/hbase/test-util/test-util.h
similarity index 96%
rename from hbase-native-client/test-util/test-util.h
rename to hbase-native-client/src/hbase/test-util/test-util.h
index 40e99d1..7c57c28 100644
--- a/hbase-native-client/test-util/test-util.h
+++ b/hbase-native-client/src/hbase/test-util/test-util.h
@@ -25,8 +25,8 @@
 #include <memory>
 #include <string>
 #include <vector>
-#include "core/configuration.h"
-#include "test-util/mini-cluster.h"
+#include "hbase/client/configuration.h"
+#include "hbase/test-util/mini-cluster.h"
 
 namespace hbase {
 /**
diff --git a/hbase-native-client/utils/BUCK b/hbase-native-client/src/hbase/utils/BUCK
similarity index 88%
rename from hbase-native-client/utils/BUCK
rename to hbase-native-client/src/hbase/utils/BUCK
index 96f02b8..ab55d8f 100644
--- a/hbase-native-client/utils/BUCK
+++ b/hbase-native-client/src/hbase/utils/BUCK
@@ -18,17 +18,10 @@
 cxx_library(
     name="utils",
     exported_headers=[
-        "bytes-util.h",
-        "connection-util.h",
-        "concurrent-map.h",
-        "optional.h",
-        "sys-util.h",
-        "time-util.h",
-        "user-util.h",
-        "version.h",
     ],
     srcs=["bytes-util.cc", "connection-util.cc", "user-util.cc"],
     deps=[
+        '//include/hbase/utils:utils',
         '//third-party:folly',
     ],
     tests=[":user-util-test"],
@@ -61,4 +54,4 @@ cxx_test(
     ],
     deps=[
         ":utils",
-    ],)
\ No newline at end of file
+    ],)
diff --git a/hbase-native-client/utils/bytes-util-test.cc b/hbase-native-client/src/hbase/utils/bytes-util-test.cc
similarity index 98%
rename from hbase-native-client/utils/bytes-util-test.cc
rename to hbase-native-client/src/hbase/utils/bytes-util-test.cc
index 4a49593..e601d2d 100644
--- a/hbase-native-client/utils/bytes-util-test.cc
+++ b/hbase-native-client/src/hbase/utils/bytes-util-test.cc
@@ -21,7 +21,7 @@
 #include <gtest/gtest.h>
 #include <string>
 
-#include "utils/bytes-util.h"
+#include "hbase/utils/bytes-util.h"
 
 using hbase::BytesUtil;
 
diff --git a/hbase-native-client/utils/bytes-util.cc b/hbase-native-client/src/hbase/utils/bytes-util.cc
similarity index 98%
rename from hbase-native-client/utils/bytes-util.cc
rename to hbase-native-client/src/hbase/utils/bytes-util.cc
index 12037c3..144b866 100644
--- a/hbase-native-client/utils/bytes-util.cc
+++ b/hbase-native-client/src/hbase/utils/bytes-util.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "utils/bytes-util.h"
+#include "hbase/utils/bytes-util.h"
 
 #include <bits/stdc++.h>
 #include <boost/predef.h>
diff --git a/hbase-native-client/utils/concurrent-map-test.cc b/hbase-native-client/src/hbase/utils/concurrent-map-test.cc
similarity index 96%
rename from hbase-native-client/utils/concurrent-map-test.cc
rename to hbase-native-client/src/hbase/utils/concurrent-map-test.cc
index 588bd08..b95c442 100644
--- a/hbase-native-client/utils/concurrent-map-test.cc
+++ b/hbase-native-client/src/hbase/utils/concurrent-map-test.cc
@@ -21,7 +21,7 @@
 #include <gtest/gtest.h>
 #include <string>
 
-#include "utils/concurrent-map.h"
+#include "hbase/utils/concurrent-map.h"
 
 using hbase::concurrent_map;
 
diff --git a/hbase-native-client/utils/connection-util.cc b/hbase-native-client/src/hbase/utils/connection-util.cc
similarity index 96%
rename from hbase-native-client/utils/connection-util.cc
rename to hbase-native-client/src/hbase/utils/connection-util.cc
index 76689bf..d78507c 100644
--- a/hbase-native-client/utils/connection-util.cc
+++ b/hbase-native-client/src/hbase/utils/connection-util.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "utils/connection-util.h"
+#include "hbase/utils/connection-util.h"
 
 namespace hbase {
 
diff --git a/hbase-native-client/utils/user-util-test.cc b/hbase-native-client/src/hbase/utils/user-util-test.cc
similarity index 96%
rename from hbase-native-client/utils/user-util-test.cc
rename to hbase-native-client/src/hbase/utils/user-util-test.cc
index aa3fa45..6a022ef 100644
--- a/hbase-native-client/utils/user-util-test.cc
+++ b/hbase-native-client/src/hbase/utils/user-util-test.cc
@@ -21,7 +21,7 @@
 #include <gtest/gtest.h>
 #include <string>
 
-#include "utils/user-util.h"
+#include "hbase/utils/user-util.h"
 
 using namespace std;
 using namespace hbase;
diff --git a/hbase-native-client/utils/user-util.cc b/hbase-native-client/src/hbase/utils/user-util.cc
similarity index 98%
rename from hbase-native-client/utils/user-util.cc
rename to hbase-native-client/src/hbase/utils/user-util.cc
index 092d54c..ec8bb27 100644
--- a/hbase-native-client/utils/user-util.cc
+++ b/hbase-native-client/src/hbase/utils/user-util.cc
@@ -17,7 +17,7 @@
  *
  */
 
-#include "utils/user-util.h"
+#include "hbase/utils/user-util.h"
 
 #include <folly/Logging.h>
 #include <krb5/krb5.h>