}
  
        /* Register device */
-       data->hwmon_dev = hwmon_device_register(&client->dev);
 -      data->class_dev = hwmon_device_register(dev);
 -      if (IS_ERR(data->class_dev)) {
++      data->hwmon_dev = hwmon_device_register(dev);
 +      if (IS_ERR(data->hwmon_dev)) {
+               dev_err(dev, "Failed to register device.\n");
 -              err = PTR_ERR(data->class_dev);
 +              err = PTR_ERR(data->hwmon_dev);
                goto exit_remove;
        }
  
                return 0;
        }
  
-       return i2c_probe(adapter, &addr_data, dme1737_detect);
+       return i2c_probe(adapter, &addr_data, dme1737_i2c_detect);
  }
  
- static int dme1737_detach_client(struct i2c_client *client)
+ static int dme1737_i2c_detach_client(struct i2c_client *client)
  {
        struct dme1737_data *data = i2c_get_clientdata(client);
-       int ix, err;
+       int err;
  
 -      hwmon_device_unregister(data->class_dev);
 +      hwmon_device_unregister(data->hwmon_dev);
- 
-       for (ix = 0; ix < ARRAY_SIZE(dme1737_fan_group); ix++) {
-               if (data->has_fan & (1 << ix)) {
-                       sysfs_remove_group(&client->dev.kobj,
-                                          &dme1737_fan_group[ix]);
-               }
-       }
-       for (ix = 0; ix < ARRAY_SIZE(dme1737_pwm_group); ix++) {
-               if (data->has_pwm & (1 << ix)) {
-                       sysfs_remove_group(&client->dev.kobj,
-                                          &dme1737_pwm_group[ix]);
-               }
-       }
-       sysfs_remove_group(&client->dev.kobj, &dme1737_group);
+       dme1737_remove_files(&client->dev);
  
        if ((err = i2c_detach_client(client))) {
                return err;