diff --git a/input/classifier/1.0/default/Android.bp b/input/classifier/1.0/default/Android.bp
index ddd883c..ceb2aca 100644
--- a/input/classifier/1.0/default/Android.bp
+++ b/input/classifier/1.0/default/Android.bp
@@ -1,6 +1,6 @@
 cc_binary {
-    name: "android.hardware.input.classifier@1.0-service-example",
-    init_rc: ["android.hardware.input.classifier@1.0-service-example.rc"],
+    name: "android.hardware.input.classifier@1.0-service.default",
+    init_rc: ["android.hardware.input.classifier@1.0-service.default.rc"],
     relative_install_path: "hw",
     vendor: true,
     vintf_fragments: ["manifest_input.classifier.xml"],
diff --git a/input/classifier/1.0/default/InputClassifier.cpp b/input/classifier/1.0/default/InputClassifier.cpp
index a78bbc5..cce9190 100644
--- a/input/classifier/1.0/default/InputClassifier.cpp
+++ b/input/classifier/1.0/default/InputClassifier.cpp
@@ -31,41 +31,24 @@
 namespace implementation {
 
 // Methods from ::android::hardware::input::classifier::V1_0::IInputClassifier follow.
-Return<Classification> InputClassifier::classify(const MotionEvent& event) {
+Return<Classification> InputClassifier::classify(const MotionEvent& /*event*/) {
     /**
-     * In this example implementation, we will see how many "pixels" inside the video frame
-     * exceed the value of 250. If more than 6 such pixels are present, then treat the event
-     * as a "DEEP_PRESS".
+     * The touchscreen data is highly device-dependent.
+     * As a result, the implementation of this method will likely be hardware-specific.
+     * Here we just report gesture as not having any classification, which means that the
+     * default action will be taken in the framework.
+     * This is equivalent to not having the InputClassifier HAL at all.
      */
-    if (event.frames.size() == 0) {
-        return Classification::NONE;
-    }
-    ALOGI("Frame(O) timestamp = %" PRIu64 ", received %zu frame(s)", event.frames[0].timestamp,
-          event.frames.size());
-    for (const VideoFrame& frame : event.frames) {
-        size_t count = 0;
-        for (size_t i = 0; i < frame.data.size(); i++) {
-            if (frame.data[i] > 250) {
-                count++;
-            }
-        }
-        if (count > 6) {
-            return Classification::DEEP_PRESS;
-        }
-    }
-
     return Classification::NONE;
 }
 
 Return<void> InputClassifier::reset() {
-    // We don't have any internal state in this example implementation,
-    // so no work needed here.
+    // We don't have any internal state, so no work needed here.
     return Void();
 }
 
 Return<void> InputClassifier::resetDevice(int32_t /*deviceId*/) {
-    // We don't have any internal per-device state in this example implementation,
-    // so no work needed here.
+    // We don't have any internal per-device state, so no work needed here.
     return Void();
 }
 
diff --git a/input/classifier/1.0/default/android.hardware.input.classifier@1.0-service-example.rc b/input/classifier/1.0/default/android.hardware.input.classifier@1.0-service.default.rc
similarity index 90%
rename from input/classifier/1.0/default/android.hardware.input.classifier@1.0-service-example.rc
rename to input/classifier/1.0/default/android.hardware.input.classifier@1.0-service.default.rc
index f799bf4..e7d16ae 100644
--- a/input/classifier/1.0/default/android.hardware.input.classifier@1.0-service-example.rc
+++ b/input/classifier/1.0/default/android.hardware.input.classifier@1.0-service.default.rc
@@ -1,4 +1,4 @@
-service vendor.input.classifier-1-0 /vendor/bin/hw/android.hardware.input.classifier@1.0-service-example
+service vendor.input.classifier-1-0 /vendor/bin/hw/android.hardware.input.classifier@1.0-service.default
     # Must be specified if "disabled" is set. This HAL will only start if requested via getService
     interface android.hardware.input.classifier@1.0::IInputClassifier default
     class hal
