diff --git a/bean.module b/bean.module
index 7eff43f..7c68cd4 100644
--- a/bean.module
+++ b/bean.module
@@ -334,7 +334,13 @@ function bean_load($bid, $reset = FALSE) {
  * @see bean_load()
  */
 function bean_load_multiple($bids = array(), $conditions = array(), $reset = FALSE) {
-  return entity_load('bean', $bids, $conditions, $reset);
+  $beans = entity_load('bean', $bids, $conditions, $reset);
+  foreach ($beans as $bid => $bean) {
+    $bean->setPlugin();
+    $bean->setFields();
+    $beans[$bid] = $bean;
+  }
+  return $beans;
 }
 
 /**
diff --git a/includes/bean.core.inc b/includes/bean.core.inc
index ca6c025..12c6fdb 100644
--- a/includes/bean.core.inc
+++ b/includes/bean.core.inc
@@ -24,16 +24,34 @@ class Bean extends Entity {
   public function __construct($values = array()) {
     parent::__construct($values, 'bean');
 
-    // load the plugin info
-    $this->plugin = bean_load_plugin_class($this->type);
-    $this->setFields();
+    // Load the plugin info
+    // NOTE: When this is caalled as part of entity_load, $values seems to be
+    // empty, which makes it impossible to load the plugin and field data.
+    // in this case, we don't do this now and rely on the caller of entity_load to
+    // do it manually.
+    if (!empty($this->type)) {
+      $this->setPlugin();
+      $this->setFields();
+    }
   }
 
   /**
+   * Load and set the plugin info.
+   * FIXME: This should probably be be private, but we need to be able to call it
+   * externally for now (see note in __construct).
+   */
+  public function setPlugin() {
+    $this->plugin = bean_load_plugin_class($this->type);
+  }
+  
+  /**
    * Set the fields from the defaults and plugin
+   * FIXME: This should probably be be private, but we need to be able to call it
+   * externally for now (see note in __construct).
    */
-  protected function setFields() {
-    $values = unserialize($this->data);
+  public function setFields() {
+    // NOTE: When setFields is caled externally $this->data is already unserializd.
+    $values = is_array($this->data)? $this->data : unserialize($this->data);
     foreach ($this->plugin->values() as $field => $default) {
       $this->$field = isset($values[$field]) ? $values[$field] : $default;
     }
