diff --git a/entity_boxes.install b/entity_boxes.install
index e2e487b..80dae54 100644
--- a/entity_boxes.install
+++ b/entity_boxes.install
@@ -5,9 +5,7 @@
  * Sets up the base table for our entity and a table to store information about
  * the entity types.
  */
-
-drupal_static('entity_boxes_install', TRUE);
-
+ 
 /**
  * Implements hook_schema().
  */
diff --git a/entity_boxes.module b/entity_boxes.module
index 64449d4..2b227b5 100644
--- a/entity_boxes.module
+++ b/entity_boxes.module
@@ -514,9 +514,18 @@ class BoxEntityTypeController extends EntityAPIControllerExportable {
  */
 function entity_boxes_boxes_plugins() {
   $info = array();
+  // force clear of entity cache so custom box types are available
+  // otherwise we will crash when module is installed/enabled
+  // NOTE: Do not call anything related to entity_boxes_get_types before
+  // clearing this cache as that can cause infinite loop
+  entity_info_cache_clear();
+  // force schemas to be reloaded into cache
+  // otherwise we can still get errors when module is enabled
+  drupal_get_schema('entity_boxes', TRUE);
+  drupal_get_schema('entity_boxes_type', TRUE);
   $path = drupal_get_path('module', 'entity_boxes') . '/plugins';
-  //calling this in during our install process will cause issues
-  if (!drupal_static('entity_boxes_install', FALSE)) {
+  // only do next part if entity_boxes_type table already exists (e.g., not during install)
+  if (db_table_exists('entity_boxes_type')) {
     foreach (entity_boxes_get_types() as $type) {
       $info[$type->type] = array(
         'title' => $type->label,
