diff --git a/ers.module b/ers.module
index da520bc..5765288 100644
--- a/ers.module
+++ b/ers.module
@@ -459,20 +459,13 @@ function ers_entity_schedule_form($entity_type, $entity, $checkbox = TRUE) {
     ),
   );
 
-  if (empty($revision_id)) {
-    // If there is no revision id yet, the first revision MUST be the published
-    // So hide the scheduling widget.
-    $form['ers']['#access'] = FALSE;
-    return $form;
-  }
-
   if (module_exists('date_popup')) {
     $form['ers']['ers_publish_schedule']['#type'] = 'date_popup';
     $form['ers']['ers_publish_schedule']['#description'] = t('Leave blank to publish this draft immediately.');
     unset($form['ers']['ers_publish_schedule']['#maxlength']);
   }
 
-  if (!empty($entity->ers_schedule[$revision_id])) {
+  if (!empty($revision_id) && !empty($entity->ers_schedule[$revision_id])) {
     $schedule = $entity->ers_schedule[$revision_id];
     $form['ers']['ers_publish']['#default_value'] = TRUE;
     if (module_exists('date_popup')) {
diff --git a/plugins/entity/ERSEntityNode.class.php b/plugins/entity/ERSEntityNode.class.php
index 5aaaa11..75e1ebf 100644
--- a/plugins/entity/ERSEntityNode.class.php
+++ b/plugins/entity/ERSEntityNode.class.php
@@ -42,6 +42,11 @@ class ERSEntityNode extends ERSEntityDefault {
     // which we absolutely do no want in this context. So we store that
     // UID and restore it after the node_save.
     $uid = $published_revision->revision_uid;
+
+    // If node is unpublished, publish it.
+    //$published_revision->status = TRUE;
+    $published_revision->status = (bool) $published_revision->published_revision_id;
+
     node_save($published_revision);
     if ($uid != $GLOBALS['user']->uid) {
       db_update('node_revision')
@@ -70,24 +75,31 @@ class ERSEntityNode extends ERSEntityDefault {
         return;
       }
 
-      if (empty($node->nid)) {
-        return;
-      }
+      // Make sure to include this file when form is cached.
+      $form_state['build_info']['files'][] = $this->plugin['path'] . '/' . $this->plugin['handler'] . '.class.php';
 
-      // Reset the revision field.
-      if ($node->published_revision_id == $node->draft_revision_id) {
-        $form['revision_information']['revision']['#default_value'] = TRUE;
-        $form['revision_information']['revision']['#description'] = t('Creating a new revision will create a draft revision. This revision will not be published until it is published from the revisions tab. Creating a new revision will create a new draft revision only.');
-        $form['revision_information']['revision']['#disabled'] = TRUE;
+      if (empty($node->nid)) {
+        $form['options']['status']['#disabled'] = TRUE;
+        $form['options']['status']['#default_value'] = FALSE;
+        $form['options'] += ers_entity_schedule_form('node', $node);
+        $form['#submit'][] = 'ers_node_form_submit';
       }
       else {
-        $form['revision_information']['revision']['#default_value'] = FALSE;
-        $form['revision_information']['revision']['#description'] = t('You are currently editing the draft revision. This draft will not be published until it is published from the revisions tab.');
+        // Reset the revision field.
+        if ($node->published_revision_id == $node->draft_revision_id) {
+          $form['revision_information']['revision']['#default_value'] = TRUE;
+          $form['revision_information']['revision']['#description'] = t('Creating a new revision will create a draft revision. This revision will not be published until it is published from the revisions tab. Creating a new revision will create a new draft revision only.');
+          $form['revision_information']['revision']['#disabled'] = TRUE;
+        }
+        else {
+          $form['revision_information']['revision']['#default_value'] = FALSE;
+          $form['revision_information']['revision']['#description'] = t('You are currently editing the draft revision. This draft will not be published until it is published from the revisions tab.');
+        }
+  
+        // Provide a scheduling widget to schedule this draft.
+        $form['revision_information'] += ers_entity_schedule_form('node', $node);
+        $form['#submit'][] = 'ers_node_form_submit';
       }
-
-      // Provide a scheduling widget to schedule this draft.
-      $form['revision_information'] += ers_entity_schedule_form('node', $node);
-      $form['#submit'][] = 'ers_node_form_submit';
     }
   }
 
@@ -240,5 +252,6 @@ class ERSEntityNode extends ERSEntityDefault {
 }
 
 function ers_node_form_submit($form, &$form_state) {
-  ers_entity_schedule_form_submit($form['revision_information'], $form_state, 'node', $form_state['node']);
+  $node = &$form_state['node'];
+  ers_entity_schedule_form_submit((empty($node->nid) ? $form['options'] : $form['revision_information']), $form_state, 'node', $node);
 }
