diff --git a/form_builder.js b/form_builder.js
index c4ff3aa..d1c4822 100644
--- a/form_builder.js
+++ b/form_builder.js
@@ -382,7 +382,7 @@ Drupal.formBuilder.deleteField = function() {
 
     // Check for an entirely empty form and for empty fieldsets.
     Drupal.formBuilder.checkForm();
-    Drupal.formBuilder.checkFieldsets(null, null, true);
+    Drupal.formBuilder.checkFieldsets([], true);
   });
 };
 
@@ -745,9 +745,13 @@ Drupal.formBuilder.stopDrag = function(e, ui) {
  *   An array of DOM objects within a fieldset that should not be included when
  *   checking if the fieldset is empty.
  */
-Drupal.formBuilder.checkFieldsets = function(exclusions) {
+Drupal.formBuilder.checkFieldsets = function(exclusions, animate) {
   var $wrappers = $('#form-builder div.form-builder-element > fieldset.form-builder-fieldset > div.fieldset-wrapper');
 
+  // Make sure exclusions is an array and always skip any description.
+  exclusions = exclusions ? exclusions : [];
+  exclusions.push('.fieldset-description');
+
   // Insert a placeholder into all empty fieldset wrappers.
   $wrappers.each(function() {
     var children = $(this).children(':visible, :not(.ui-draggable-dragging)');
@@ -757,7 +761,12 @@ Drupal.formBuilder.checkFieldsets = function(exclusions) {
 
     if (children.length == 0) {
       // No children, add a placeholder.
-      $(this).prepend(Drupal.settings.formBuilder.emptyFieldset);
+      if (animate) {
+        $(Drupal.settings.formBuilder.emptyFieldset).css('display', 'none').appendTo(this).slideDown();
+      }
+      else {
+        $(Drupal.settings.formBuilder.emptyFieldset).appendTo(this);
+      }
     }
     else if (children.length > 1 && children.hasClass('form-builder-empty-placeholder')) {
       // The fieldset has at least one element besides the placeholder, remove
