diff --git a/bean.module b/bean.module
index c93bff0..6cdf50b 100644
--- a/bean.module
+++ b/bean.module
@@ -402,8 +402,7 @@ function bean_load_multiple($bids = array(), $conditions = array(), $reset = FAL
   $beans = entity_load('bean', $bids, $conditions, $reset);
   foreach ($beans as $bid => $bean) {
     try {
-      $bean->setPlugin();
-      $bean->setFields();
+      $bean->loadUp();
     } catch (BeanException $e) {
       watchdog('bean', 'Bid: @bid Bean not loaded correctly', array('@bid' => $bean->bid), WATCHDOG_ERROR);
     }
@@ -592,7 +591,9 @@ function bean_delete(Bean $bean) {
  *     the message type.
  */
 function bean_create($values) {
-  return entity_create('bean', $values);
+  $bean = entity_create('bean', $values);
+  $bean->loadUp();
+  return $bean;
 }
 
 /**
diff --git a/includes/bean.core.inc b/includes/bean.core.inc
index bdf0250..1f6dd50 100644
--- a/includes/bean.core.inc
+++ b/includes/bean.core.inc
@@ -141,20 +141,30 @@ class Bean extends Entity {
     // 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();
+      $this->loadUp();
     }
   }
 
   /**
+   * This is a work around for version of PDO that call __construct() before
+   * it loads up the object with values from the DB.
+   */
+  public function loadUp() {
+    $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);
-    if (!($this->plugin instanceof bean_type_plugin_interface)) {
-      throw new BeanException('Plugin Not Loaded');
+  protected  function setPlugin() {
+    if (empty($this->plugin)) {
+      $this->plugin = bean_load_plugin_class($this->type);
+      if (!($this->plugin instanceof bean_type_plugin_interface)) {
+        throw new BeanException('Plugin Not Loaded');
+      }
     }
   }
 
@@ -163,7 +173,7 @@ class Bean extends Entity {
    * 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 setFields() {
+  protected function setFields() {
     // NOTE: When setFields is caled externally $this->data is already unserializd.
     if (!empty($this->plugin)) {
       $values = is_array($this->data) ? $this->data : unserialize($this->data);
@@ -185,6 +195,7 @@ class Bean extends Entity {
    * Get the plugin form
    */
   public function getForm() {
+    $this->loadUp();
     return $this->plugin->form($this);
   }
 
