diff --git a/plugins/services_entity_resource_clean.inc b/plugins/services_entity_resource_clean.inc
index 054c3e4..9019c17 100644
--- a/plugins/services_entity_resource_clean.inc
+++ b/plugins/services_entity_resource_clean.inc
@@ -24,12 +24,16 @@ class ServicesEntityResourceControllerClean extends ServicesEntityResourceContro
 
     // Make sure that bundle information is present on entities that have
     // bundles.
-    $entity_info = entity_get_info($entity_type);
-    if (isset($entity_info['bundle keys'])) {
-      foreach ($entity_info['bundle keys'] as $bundle_key) {
-        if (!array_key_exists($bundle_key, $values)) {
-          services_error('Missing bundle: ' . $bundle_key, 406);
-        }
+    if ($bundle_key = $wrapper->entityKey('bundle')) {
+      $entity = $wrapper->value();
+      if (empty($entity->{$bundle_key})) {
+        // Default missing bundle to the entity type. We have to do this after
+        // creating the wrapper, because the name of the bundle key may differ
+        // from that of the corresponding metadata property.
+        $entity->{$bundle_key} = $entity_type;
+        // @todo It seems cleaner to me to just throw an exception if the bundle
+        // is missing. (~wodenx)
+        // services_error('Missing bundle: ' . $bundle_key, 406);
       }
     }
 
@@ -193,16 +197,6 @@ class ServicesEntityResourceControllerClean extends ServicesEntityResourceContro
    * @return type
    */
   protected function transform_values($entity_type, $property_info, $values) {
-    // Default the bundle to the entity_type. This allows eck types that don't use custom bundles to not have to specify the bundle.
-    $entity_info = entity_get_info($entity_type);
-    if (isset($entity_info['bundle keys'])) {
-      foreach ($entity_info['bundle keys'] as $bundle_key) {
-        if (!array_key_exists($bundle_key, $values)) {
-          $values[$bundle_key] = $entity_type;
-        }
-      }
-    }
-
     foreach($values as $key => $value) {
       // Handle Resource references so we can pass pack the object.
       if (is_array($value) && isset($value['id'])) {
