diff --git a/DnsProxyListener.cpp b/DnsProxyListener.cpp
index 0b31b95..ac4a09e 100644
--- a/DnsProxyListener.cpp
+++ b/DnsProxyListener.cpp
@@ -54,10 +54,10 @@
 #include "ResolverEventReporter.h"
 #include "getaddrinfo.h"
 #include "gethnamaddr.h"
-#include "netd_resolv/stats.h"  // RCODE_TIMEOUT
 #include "res_send.h"
 #include "resolv_cache.h"
 #include "resolv_private.h"
+#include "stats.h"  // RCODE_TIMEOUT
 #include "stats.pb.h"
 
 using aidl::android::net::metrics::INetdEventListener;
diff --git a/DnsTlsServer.h b/DnsTlsServer.h
index dd66868..82d1a45 100644
--- a/DnsTlsServer.h
+++ b/DnsTlsServer.h
@@ -14,8 +14,7 @@
  * limitations under the License.
  */
 
-#ifndef _DNS_DNSTLSSERVER_H
-#define _DNS_DNSTLSSERVER_H
+#pragma once
 
 #include <chrono>
 #include <set>
@@ -24,7 +23,7 @@
 
 #include <netinet/in.h>
 
-#include <netd_resolv/params.h>
+#include <params.h>
 
 namespace android {
 namespace net {
@@ -80,5 +79,3 @@
 
 }  // namespace net
 }  // namespace android
-
-#endif  // _DNS_DNSTLSSERVER_H
diff --git a/ResolverController.cpp b/ResolverController.cpp
index 513353e..df3f457 100644
--- a/ResolverController.cpp
+++ b/ResolverController.cpp
@@ -34,8 +34,8 @@
 #include "PrivateDnsConfiguration.h"
 #include "ResolverEventReporter.h"
 #include "ResolverStats.h"
-#include "netd_resolv/stats.h"
 #include "resolv_cache.h"
+#include "stats.h"
 
 using aidl::android::net::ResolverParamsParcel;
 
diff --git a/include/netd_resolv/resolv.h b/include/netd_resolv/resolv.h
index 1ab6138..596a022 100644
--- a/include/netd_resolv/resolv.h
+++ b/include/netd_resolv/resolv.h
@@ -28,8 +28,6 @@
 
 #pragma once
 
-#include "params.h"
-
 #include <arpa/nameser.h>
 #include <netinet/in.h>
 
@@ -120,6 +118,8 @@
 
 #define TAG_SYSTEM_DNS 0xFFFFFF82
 
+#define LIBNETD_RESOLV_PUBLIC extern "C" [[gnu::visibility("default")]]
+
 LIBNETD_RESOLV_PUBLIC bool resolv_has_nameservers(unsigned netid);
 
 // Set callbacks and bring DnsResolver up.
diff --git a/include/netd_resolv/resolv_stub.h b/include/netd_resolv/resolv_stub.h
index 4166ed5..52ddf75 100644
--- a/include/netd_resolv/resolv_stub.h
+++ b/include/netd_resolv/resolv_stub.h
@@ -26,11 +26,9 @@
  * SUCH DAMAGE.
  */
 
-#ifndef NETD_RESOLV_RESOLV_STUB_H
-#define NETD_RESOLV_RESOLV_STUB_H
+#pragma once
 
 #include "resolv.h"
-#include "stats.h"
 
 // Struct containing function pointers for every function exported by libnetd_resolv.
 extern struct ResolvStub {
@@ -44,5 +42,3 @@
 } RESOLV_STUB;
 
 int resolv_stub_init();
-
-#endif  // NETD_RESOLV_RESOLV_STUB_H
diff --git a/include/netd_resolv/stats.h b/include/netd_resolv/stats.h
deleted file mode 100644
index 7bfe845..0000000
--- a/include/netd_resolv/stats.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed 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.
- */
-
-#ifndef NETD_RES_STATS_H
-#define NETD_RES_STATS_H
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <sys/socket.h>
-#include <time.h>
-
-#include "params.h"
-
-#define RCODE_INTERNAL_ERROR 254
-#define RCODE_TIMEOUT 255
-
-struct res_sample {
-    time_t at;      // time in s at which the sample was recorded
-    uint16_t rtt;   // round-trip time in ms
-    uint8_t rcode;  // the DNS rcode or RCODE_XXX defined above
-};
-
-// Resolver reachability statistics and run-time parameters.
-struct res_stats {
-    // Stats of the last <sample_count> queries.
-    res_sample samples[MAXNSSAMPLES];
-    // The number of samples stored.
-    uint8_t sample_count;
-    // The next sample to modify.
-    uint8_t sample_next;
-};
-
-// Aggregates the reachability statistics for the given server based on on the stored samples.
-LIBNETD_RESOLV_PUBLIC void android_net_res_stats_aggregate(res_stats* stats, int* successes,
-                                                           int* errors, int* timeouts,
-                                                           int* internal_errors, int* rtt_avg,
-                                                           time_t* last_sample_time);
-
-LIBNETD_RESOLV_PUBLIC int android_net_res_stats_get_info_for_net(
-        unsigned netid, int* nscount, sockaddr_storage servers[MAXNS], int* dcount,
-        char domains[MAXDNSRCH][MAXDNSRCHPATH], res_params* params, res_stats stats[MAXNS],
-        int* wait_for_pending_req_timeout_count);
-
-// Returns an array of bools indicating which servers are considered good
-LIBNETD_RESOLV_PUBLIC int android_net_res_stats_get_usable_servers(const res_params* params,
-                                                                   res_stats stats[], int nscount,
-                                                                   bool valid_servers[]);
-
-#endif  // NETD_RES_STATS_H
diff --git a/include/netd_resolv/params.h b/params.h
similarity index 89%
rename from include/netd_resolv/params.h
rename to params.h
index 93e6287..82cd058 100644
--- a/include/netd_resolv/params.h
+++ b/params.h
@@ -14,8 +14,7 @@
  * limitations under the License.
  */
 
-#ifndef NETD_RESOLV_PARAMS_H
-#define NETD_RESOLV_PARAMS_H
+#pragma once
 
 #include <stdint.h>
 
@@ -34,7 +33,3 @@
     int base_timeout_msec;      // base query retry timeout (if 0, use RES_TIMEOUT)
     int retry_count;            // number of retries
 };
-
-#define LIBNETD_RESOLV_PUBLIC extern "C" [[gnu::visibility("default")]]
-
-#endif  // NETD_RESOLV_PARAMS_H
diff --git a/res_send.cpp b/res_send.cpp
index dba7232..60c63c3 100644
--- a/res_send.cpp
+++ b/res_send.cpp
@@ -103,11 +103,11 @@
 #include "DnsTlsTransport.h"
 #include "PrivateDnsConfiguration.h"
 #include "netd_resolv/resolv.h"
-#include "netd_resolv/stats.h"
 #include "private/android_filesystem_config.h"
 #include "res_debug.h"
 #include "res_init.h"
 #include "resolv_cache.h"
+#include "stats.h"
 #include "stats.pb.h"
 #include "util.h"
 
diff --git a/res_stats.cpp b/res_stats.cpp
index 5faf7ca..36dde6b 100644
--- a/res_stats.cpp
+++ b/res_stats.cpp
@@ -21,8 +21,7 @@
 
 #include <android-base/logging.h>
 
-#include "netd_resolv/stats.h"
-
+#include "stats.h"
 
 // Calculate the round-trip-time from start time t0 and end time t1.
 int _res_stats_calculate_rtt(const timespec* t1, const timespec* t0) {
diff --git a/resolv_cache.h b/resolv_cache.h
index 5c443a8..c838345 100644
--- a/resolv_cache.h
+++ b/resolv_cache.h
@@ -36,7 +36,7 @@
 #include <stats.pb.h>
 
 #include "ResolverStats.h"
-#include "netd_resolv/params.h"
+#include "params.h"
 
 // Sets the name server addresses to the provided ResState.
 // The name servers are retrieved from the cache which is associated
diff --git a/resolv_cache_unit_test.cpp b/resolv_cache_unit_test.cpp
index 900b8f5..cdefb35 100644
--- a/resolv_cache_unit_test.cpp
+++ b/resolv_cache_unit_test.cpp
@@ -30,10 +30,10 @@
 #include <gmock/gmock-matchers.h>
 #include <gtest/gtest.h>
 
-#include "netd_resolv/stats.h"
 #include "res_init.h"
 #include "resolv_cache.h"
 #include "resolv_private.h"
+#include "stats.h"
 #include "tests/dns_responder/dns_responder.h"
 
 using namespace std::chrono_literals;
diff --git a/resolv_integration_test.cpp b/resolv_integration_test.cpp
index 3f37c29..76b2344 100644
--- a/resolv_integration_test.cpp
+++ b/resolv_integration_test.cpp
@@ -58,8 +58,8 @@
 #include "ResolverStats.h"
 #include "android/net/IDnsResolver.h"
 #include "binder/IServiceManager.h"
-#include "netd_resolv/params.h"  // MAXNS
 #include "netid_client.h"        // NETID_UNSET
+#include "params.h"              // MAXNS
 #include "test_utils.h"
 #include "tests/dns_metrics_listener/dns_metrics_listener.h"
 #include "tests/dns_responder/dns_responder.h"
diff --git a/resolv_private.h b/resolv_private.h
index 5cbde1a..4a45902 100644
--- a/resolv_private.h
+++ b/resolv_private.h
@@ -46,13 +46,7 @@
  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/*
- *	@(#)resolv.h	8.1 (Berkeley) 6/2/93
- *	Id: resolv.h,v 1.7.2.11.4.2 2004/06/25 00:41:05 marka Exp
- */
-
-#ifndef NETD_RESOLV_PRIVATE_H
-#define NETD_RESOLV_PRIVATE_H
+#pragma once
 
 #include <android-base/logging.h>
 #include <net/if.h>
@@ -62,9 +56,9 @@
 #include <vector>
 
 #include "DnsResolver.h"
-#include "netd_resolv/params.h"
 #include "netd_resolv/resolv.h"
-#include "netd_resolv/stats.h"
+#include "params.h"
+#include "stats.h"
 #include "stats.pb.h"
 
 // Linux defines MAXHOSTNAMELEN as 64, while the domain name limit in
@@ -202,5 +196,3 @@
                 NI_NUMERICHOST);
     return std::string(out);
 }
-
-#endif  // NETD_RESOLV_PRIVATE_H
diff --git a/stats.h b/stats.h
new file mode 100644
index 0000000..cc7de9f
--- /dev/null
+++ b/stats.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed 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.
+ */
+
+#pragma once
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <sys/socket.h>
+#include <time.h>
+
+#include "params.h"
+
+#define RCODE_INTERNAL_ERROR 254
+#define RCODE_TIMEOUT 255
+
+struct res_sample {
+    time_t at;      // time in s at which the sample was recorded
+    uint16_t rtt;   // round-trip time in ms
+    uint8_t rcode;  // the DNS rcode or RCODE_XXX defined above
+};
+
+// Resolver reachability statistics and run-time parameters.
+struct res_stats {
+    // Stats of the last <sample_count> queries.
+    res_sample samples[MAXNSSAMPLES];
+    // The number of samples stored.
+    uint8_t sample_count;
+    // The next sample to modify.
+    uint8_t sample_next;
+};
+
+// Aggregates the reachability statistics for the given server based on on the stored samples.
+void android_net_res_stats_aggregate(res_stats* stats, int* successes, int* errors, int* timeouts,
+                                     int* internal_errors, int* rtt_avg, time_t* last_sample_time);
+
+int android_net_res_stats_get_info_for_net(unsigned netid, int* nscount,
+                                           sockaddr_storage servers[MAXNS], int* dcount,
+                                           char domains[MAXDNSRCH][MAXDNSRCHPATH],
+                                           res_params* params, res_stats stats[MAXNS],
+                                           int* wait_for_pending_req_timeout_count);
+
+// Returns an array of bools indicating which servers are considered good
+int android_net_res_stats_get_usable_servers(const res_params* params, res_stats stats[],
+                                             int nscount, bool valid_servers[]);
diff --git a/tests/resolv_stress_test.cpp b/tests/resolv_stress_test.cpp
index f3b6126..6f7ee9d 100644
--- a/tests/resolv_stress_test.cpp
+++ b/tests/resolv_stress_test.cpp
@@ -27,7 +27,7 @@
 
 #include "ResolverStats.h"
 #include "dns_responder/dns_responder_client.h"
-#include "netd_resolv/params.h"  // MAX_NS
+#include "params.h"  // MAX_NS
 #include "resolv_test_utils.h"
 
 using android::base::StringPrintf;
diff --git a/tests/resolv_test_utils.h b/tests/resolv_test_utils.h
index 0cbf2fa..954e4c9 100644
--- a/tests/resolv_test_utils.h
+++ b/tests/resolv_test_utils.h
@@ -29,7 +29,7 @@
 
 #include "android/net/IDnsResolver.h"
 #include "dns_responder/dns_responder.h"
-#include "netd_resolv/params.h"
+#include "params.h"
 
 // TODO: make this dynamic and stop depending on implementation details.
 constexpr int TEST_NETID = 30;
