diff --git a/include/hardware/bt_gatt_client.h b/include/hardware/bt_gatt_client.h
index 6c5a85e..4322852 100644
--- a/include/hardware/bt_gatt_client.h
+++ b/include/hardware/bt_gatt_client.h
@@ -23,8 +23,6 @@
 #include "bt_gatt_types.h"
 #include "bt_common_types.h"
 
-using std::vector;
-
 __BEGIN_DECLS
 
 /**
@@ -238,14 +236,14 @@
     /** Write a remote characteristic */
     bt_status_t (*write_characteristic)(int conn_id, uint16_t handle,
                     int write_type, int auth_req,
-                    vector<uint8_t> value);
+                    std::vector<uint8_t> value);
 
     /** Read the descriptor for a given characteristic */
     bt_status_t (*read_descriptor)(int conn_id, uint16_t handle, int auth_req);
 
     /** Write a remote descriptor for a given characteristic */
     bt_status_t (*write_descriptor)( int conn_id, uint16_t handle,
-                    int auth_req, vector<uint8_t> value);
+                                     int auth_req, std::vector<uint8_t> value);
 
     /** Execute a prepared write operation */
     bt_status_t (*execute_write)(int conn_id, int execute);
diff --git a/include/hardware/bt_gatt_server.h b/include/hardware/bt_gatt_server.h
index 92af285..b105cba 100644
--- a/include/hardware/bt_gatt_server.h
+++ b/include/hardware/bt_gatt_server.h
@@ -23,8 +23,6 @@
 
 #include "bt_gatt_types.h"
 
-using std::vector;
-
 __BEGIN_DECLS
 
 /** GATT value type used in response to remote read requests */
@@ -56,7 +54,7 @@
 
 /** Callback invoked in response to create_service */
 typedef void (*service_added_callback)(int status, int server_if,
-                                       vector<btgatt_db_element_t> service);
+                                       std::vector<btgatt_db_element_t> service);
 
 /** Callback invoked in response to stop_service */
 typedef void (*service_stopped_callback)(int status, int server_if,
@@ -79,7 +77,7 @@
  */
 typedef void (*request_write_callback)(int conn_id, int trans_id, bt_bdaddr_t *bda,
                                        int attr_handle, int offset, bool need_rsp,
-                                       bool is_prep, vector<uint8_t> value);
+                                       bool is_prep, std::vector<uint8_t> value);
 
 /** Callback invoked when a previously prepared write is to be executed */
 typedef void (*request_exec_write_callback)(int conn_id, int trans_id,
@@ -141,7 +139,7 @@
                     int conn_id );
 
     /** Create a new service */
-    bt_status_t (*add_service)(int server_if, vector<btgatt_db_element_t> service);
+    bt_status_t (*add_service)(int server_if, std::vector<btgatt_db_element_t> service);
 
     /** Stops a local service */
     bt_status_t (*stop_service)(int server_if, int service_handle);
@@ -152,7 +150,7 @@
     /** Send value indication to a remote device */
     bt_status_t (*send_indication)(int server_if, int attribute_handle,
                                    int conn_id, int confirm,
-                                   vector<uint8_t> value);
+                                   std::vector<uint8_t> value);
 
     /** Send a response to a read/write operation */
     bt_status_t (*send_response)(int conn_id, int trans_id,
