diff --git a/css/relation-select.css b/css/relation-select.css
index 1f28655..a8a6bff 100644
--- a/css/relation-select.css
+++ b/css/relation-select.css
@@ -2,6 +2,11 @@
 
 /* CSS for relation select field */
 
+.form-item.form-type-relation-select {
+  padding: 1em;
+  border: 1px solid #CBCBCB;
+}
+
 .relation-select-views-output{
   position: relative;
   overflow: visible;
diff --git a/relation_select.module b/relation_select.module
index 2bde088..051389d 100644
--- a/relation_select.module
+++ b/relation_select.module
@@ -539,6 +539,8 @@ function _relation_select_field_widget_form(&$form, &$form_state, $field, $insta
       '@relation_id' => $items[$delta]['relation_id']
     ));
   }
+  // Add Relation fields to element.
+  relation_select_relation_fields_form($form, $form_state, $field, $instance, $langcode, $items, $delta, &$element, $view, $display);
   return $element;
 }
 
@@ -681,10 +683,26 @@ function relation_select_field_insert($entity_type, $entity, $field, $instance,
         if(isset($item['relation_id'])){
           $relation = $relation_entities[$item['relation_id']];
           $relation->endpoints[LANGUAGE_NONE] = $entity_keys;
-          relation_save($relation);
-        }else{
+        }
+        else {
           $relation = relation_create($relation_type->relation_type, $entity_keys);
         }
+        // Add relation fields
+        $relation_instances = field_info_instances('relation', $relation->relation_type);
+        foreach ($item['relation_fields'] as $relation_field_name => $relation_field) {
+          if (isset($relation_instances[$relation_field_name])) {
+            $langcode = array_shift(array_keys($relation_field));
+            $relation_field_items = array_shift($relation_field);
+            $relation_field = field_info_field($relation_field_name);
+
+            field_default_submit('relation', $relation, $relation_field, $relation_instances[$relation_field_name], $langcode, $relation_field_items, $form, $form_state);
+            $relation->{$relation_field_name}[$langcode] = $relation_field_items;
+          }
+          else {
+            $relation->{$relation_field_name} = $relation_field;
+          }
+        }
+        relation_save($relation);
       }elseif(isset($item['relation_id'])){ // If there's no endpoints & a VID, delete the relation
         relation_delete($item['relation_id']);
       }
@@ -1027,11 +1045,36 @@ function relation_select_list_bundles($entity_type){
   return $bundles;
 }
 
-function relation_select_relation_fields_form($form, &$form_state, $relation){
-  $form_state['relation'] = $relation;
-  field_attach_form('relation', $relation, $form, $form_state);
-  unset($form['endpoints']);
-  return $form;
+/**
+ * Attach relation fields subform to relation select element by reference.
+ */
+function relation_select_relation_fields_form($form, &$form_state, $field, $instance, $langcode, $items, $delta, &$element, $view, $display){
+  if ($instance['settings']['relation_type']) {
+    $field_parents = $element['#field_parents'];
+    $field_name = $element['#field_name'];
+    $language = $element['#language'];
+
+    $parents = array_merge($field_parents, array($field_name, $language, $delta));
+    $parents[] = 'relation_fields';
+
+    $form_element = array();
+    $form_element['relation_fields'] = array(
+      '#parents' => $parents,
+      '#prefix' => '<div id="relation-select-relation-fields-' . $delta . '">',
+      '#suffix' => '</div>',
+      '#weight' => 49
+    );
+
+    $relation_id = isset($element['#default_value']['relation_id']) ? $element['#default_value']['relation_id'] : NULL;
+    $relation_type = $element['#relation_type'];
+    $relation = isset($relation_id) ? relation_load($relation_id) : (object) relation_create($relation_type, array());
+
+    field_attach_form('relation', $relation, $form_element['relation_fields'], $form_state);
+    unset($form_element['relation_fields']['endpoints']);
+    $form_state['relation'] = $relation;
+
+    $element = array_merge($element, $form_element);
+  }
 }
 
 /*
