diff --git a/modules/content_migrate/includes/content_migrate.admin.inc b/modules/content_migrate/includes/content_migrate.admin.inc
index a996b52..254ee8f 100644
--- a/modules/content_migrate/includes/content_migrate.admin.inc
+++ b/modules/content_migrate/includes/content_migrate.admin.inc
@@ -213,12 +213,13 @@ function _content_migrate_batch_process_create_fields($field_name, &$context) {
   
   $context['message'] = t('"Creating field: %field', array('%field' => $field_name));
   $field_value = content_migrate_get_field_values($field_name);
+  $instance_info = field_info_instances($entity_type = 'node');
 
   // Create the field and store the new field 
   // definition in $context so we can retrieve it later. 
   try {
     // A shared field may already have been created, check first.
-    $field = field_info_field('node', $field_value['field_name']);
+    $field = field_info_field($field_value['field_name']);
     if (empty($field)) {
       unset($field_value['columns']);
       unset($field_value['db_storage']);   
@@ -239,20 +240,22 @@ function _content_migrate_batch_process_create_fields($field_name, &$context) {
           drupal_set_message(t('The @widget widget is not available for the @field field, setting to default widget.', array('@widget' => $instance_value['widget']['type'], '@field' => $field_name)), 'warning');
         }
 
-        foreach ($instance_value['display'] as $context => $settings) {
-          if ($context == 'label' || $context == 'parent' || $context == 'weight') {
+        foreach ($instance_value['display'] as $display_mode => $settings) {
+          // @todo Is the value being compared to $display_mode supposed to be compared to a key in $settings?
+          if ($display_mode == 'label' || $display_mode == 'parent' || $display_mode == 'weight') {
             continue;
           }
-          if (!array_key_exists( $settings['type'], $allowed_formatters)) {
+          if (!array_key_exists($settings['type'], $allowed_formatters)) {
             drupal_set_message(t('The @formatter formatter used in the @context context is not available for the @field field, setting to default formatter.', array('@formatter' => $settings['type'], '@context' => $context, '@field' => $field_name)), 'warning');
           }
         }
 
-        $instance = field_create_instance($instance_value); 
-        $context['instances'][$field_name][$instance['bundle']] = $instance;
-        drupal_set_message(t("Created instance of @field_name in bundle @bundle.", array(
-          '@field_name' => $field_name, '@bundle' => $type_names[$instance['bundle']])));
-        
+        if (!isset($instance_info[$bundle][$field_name])) {
+          $instance = field_create_instance($instance_value);
+          $context['instances'][$field_name][$instance['bundle']] = $instance;
+          drupal_set_message(t("Created instance of @field_name in bundle @bundle.", array(
+            '@field_name' => $field_name, '@bundle' => $type_names[$instance['bundle']]))); // @todo Either this or next uses wrong variable: $instance or $instance_value?
+        }
       }
       catch (Exception $e) {
         drupal_set_message(t('Error creating instance of @field_name in bundle @bundle.', array(
@@ -393,5 +396,3 @@ function _content_migrate_batch_process_migrate_data($field_name, &$context) {
   }
 
 }
-
-
diff --git a/modules/content_migrate/includes/content_migrate.drush.inc b/modules/content_migrate/includes/content_migrate.drush.inc
index ca75ff9..9403ebc 100644
--- a/modules/content_migrate/includes/content_migrate.drush.inc
+++ b/modules/content_migrate/includes/content_migrate.drush.inc
@@ -103,14 +103,14 @@ function drush_content_migrate_fields() {
 }
 
 function drush_content_migrate_field_structure($field_name) {
-  drush_log(dt('Migrating structure for !field', array('!fields' => $field_name)), 'status');
+  drush_log(dt('Migrating structure for !field', array('!field' => $field_name)), 'status');
   module_load_include('inc', 'content_migrate', 'includes/content_migrate.admin');
   $context = array();
   _content_migrate_batch_process_create_fields($field_name, $context);
 }
 
 function drush_content_migrate_field_data($field_name) {
-  drush_log(dt('Migrating data for !field', array('!fields' => $field_name)), 'status');
+  drush_log(dt('Migrating data for !field', array('!field' => $field_name)), 'status');
   module_load_include('inc', 'content_migrate', 'includes/content_migrate.admin');
   $context = array(
     'sandbox' => array(),
@@ -140,7 +140,7 @@ function drush_content_migrate_rollback() {
   drush_log(dt('Roll back complete'), 'status');
 }
 
-function drush_content_migrate_get_fields($requests = array(), $status) {
+function drush_content_migrate_get_fields($requests = array(), $status = 'available') {
   module_load_include('inc', 'content_migrate', 'includes/content_migrate.admin');
   $fields_info = content_migrate_get_options();
   $field_names = array();
@@ -155,4 +155,4 @@ function drush_content_migrate_get_fields($requests = array(), $status) {
     }
   }
   return $field_names;  
-}
\ No newline at end of file
+}
diff --git a/modules/content_migrate/modules/content_migrate.filefield.inc b/modules/content_migrate/modules/content_migrate.filefield.inc
index a5b216b..fe50bed 100644
--- a/modules/content_migrate/modules/content_migrate.filefield.inc
+++ b/modules/content_migrate/modules/content_migrate.filefield.inc
@@ -28,7 +28,6 @@ function content_migrate_filefield_field_alter(&$field_value, $instance_value) {
     // Module names and types changed.
     $field_value['module'] = 'file';
     $field_value['type'] = 'file';
-    break;
   }
 }
 
