diff --git a/env.cpp b/env.cpp
index 3194441..48963f9 100644
--- a/env.cpp
+++ b/env.cpp
@@ -76,45 +76,4 @@
     return content;
 }
 
-std::string getIndirectLabelEnv(
-    const char* prefix, std::string path, const SensorSet::key_type& sensor)
-{
-    std::string key;
-    std::string value;
-
-    path.append(sensor.first);
-    path.append(sensor.second);
-    path.append(1, '_');
-    path.append(hwmon::entry::label);
-
-    std::ifstream handle(path.c_str());
-    if (handle.fail())
-    {
-        return value;
-    }
-
-    std::string content(
-        (std::istreambuf_iterator<char>(handle)),
-        (std::istreambuf_iterator<char>()));
-
-    if (content.empty())
-    {
-        return value;
-    }
-
-    content.pop_back();
-
-    key.assign(prefix);
-    key.append(1, '_');
-    key.append(sensor.first);
-    key.append(content);
-    auto env = getenv(key.c_str());
-    if (env)
-    {
-        value.assign(env);
-    }
-
-    return value;
-}
-
 // vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
diff --git a/env.hpp b/env.hpp
index e1169e1..1b64a93 100644
--- a/env.hpp
+++ b/env.hpp
@@ -38,19 +38,3 @@
 std::string getIndirectID(
     std::string path,
     const SensorSet::key_type& sensor);
-
-/** @brief Get the label for the sensor with a level of indirection.
- *
- *  Read the sensor number from the <path>/<item><X>_label file.<item> & <X> is
- *  populated from the sensor key. The sensor label is read from the environment
- *  variable <prefix>_<item><sensorNum>.
- *
- *  @param[in] prefix - Prefix of the environment variable.
- *  @param[in] path - Directory path of the label file.
- *  @param[in] sensor - Sensor details.
- *
- *  @return On success return the sensor label, in case of failure return empty
- *          string.
- */
-std::string getIndirectLabelEnv(
-    const char* prefix, std::string path, const SensorSet::key_type& sensor);
