diff --git a/field_group.module b/field_group.module
index 5866b20..4dea6e9 100644
--- a/field_group.module
+++ b/field_group.module
@@ -1718,3 +1718,24 @@ function field_group_pre_render(& $element, $group, & $form) {
     }
   }
 }
+
+
+/**
+ * Implementation of hook_ctools_plugin_directory().
+ * Panels integration
+ */
+function field_group_ctools_plugin_directory($module, $plugin) {
+  if (in_array($module, array('panels', 'ctools', 'page_manager'))) {
+    return 'plugins/' . $plugin;
+  }
+}
\ No newline at end of file
diff --git a/plugins/content_types/entity_form_field_group.inc b/plugins/content_types/entity_form_field_group.inc
new file mode 100644
index 0000000..86d95b0
--- /dev/null
+++ b/plugins/content_types/entity_form_field_group.inc
@@ -0,0 +1,110 @@
+<?php
+<?php
+
+/**
+ * @file
+ * Handle rendering fieldgroup form elements
+ */
+$plugin = array(
+    'title' => t('Entity field group'),
+    'defaults' => array('label' => '', 'formatter' => ''),
+    'content type' => 'field_group_entity_form_field_group_content_type_content_type',
+);
+
+/**
+ * Just one subtype.
+ *
+ * Ordinarily this function is meant to get just one subtype. However, we are
+ * using it to deal with the fact that we have changed the subtype names. This
+ * lets us translate the name properly.
+ */
+function field_group_entity_form_field_group_content_type_content_type($subtype) {
+  $types = field_group_entity_form_field_group_content_type_content_types();
+  if (isset($types[$subtype])) {
+    return $types[$subtype];
+  }
+}
+
+/**
+ * return all field group content types availible
+ */
+function field_group_entity_form_field_group_content_type_content_types() {
+  $groups = field_group_read_groups();
+  foreach ($groups as $entity_type => $bundles) {
+    foreach ($bundles as $bundle => $modes) {
+      foreach ($modes as $mode => $fieldgroups) {
+        foreach ($fieldgroups as $group_name => $field_group) {
+          // Only use form field groups
+          if ($field_group->mode == 'form') {
+            $types[$entity_type . ':' . $group_name] = array(
+                'title' => t('Field Group Form: @widget_label', array(
+                    '@widget_label' => t($field_group->label),
+                )),
+                'required context' => new ctools_context_required(t('Form'), $entity_type . '_form', array('type' => $bundle)),
+                'category' => t('Form'),
+                    //A icon is missing yet
+                    //'icon' => 'icon_field_group.png',
+            );
+          }
+        }
+      }
+    }
+  }
+  return $types;
+}
+
+/**
+ * Render the custom content type.
+ */
+function field_group_entity_form_field_group_content_type_render($subtype, $conf, $panel_args, $context) {
+  if (empty($context) || empty($context->data)) {
+    return;
+  }
+
+  // Get a shortcut to the entity.
+  $entity = $context->data;
+  list($entity_type, $group_name) = explode(':', $subtype, 2);
+
+  // Load the entity type's information where the fieldgroup is placed
+  $ids = entity_extract_ids($entity_type, $entity);
+  $bundle = $entity->type;
+
+  $list = field_group_read_groups(array('bundle' => $bundle, 'entity_type' => $entity_type, 'mode' => 'form'));
+
+  $group = $list[$entity_type][$bundle]['form'][$group_name];
+
+  // Do not render if the entity type does not have this fieldgroup.
+  if (empty($group)) {
+    return;
+  }
+
+  if (isset($context->form)) {
+
+    if (isset($context->form['#pre_render'])) {
+      foreach ($context->form['#pre_render'] as $function) {
+        if (function_exists($function)) {
+          $context->form = $function($context->form);
+        }
+      }
+      unset($context->form['#pre_render']);
+    }
+
+    $block->content[$group_name] = $context->form[$group_name];
+    unset($context->form[$group_name]);
+  } else {
+    $block->content = t('Entity info.');
+  }
+  return $block;
+}
+
+/**
+ * Returns the administrative title for a type.
+ */
+function field_group_entity_form_field_group_content_type_admin_title($subtype, $conf, $context) {
+  list($entity_type, $group_name) = explode(':', $subtype, 2);
+  return t('"@s" @group_name', array('@s' => $context->identifier, '@group_name' => $group_name));
+}
+
+function field_group_entity_form_field_group_content_type_edit_form($form, &$form_state) {
+  // provide a blank form so we have a place to have context setting.
+  return $form;
+}
\ No newline at end of file
diff --git a/plugins/content_types/field_group.inc b/plugins/content_types/field_group.inc
new file mode 100644
index 0000000..75a5b93
--- /dev/null
+++ b/plugins/content_types/field_group.inc
@@ -0,0 +1,148 @@
+<?php
+
+/**
+ * field_group.inc
+ * Handle rendering fieldgroups as panes.
+ */
+if (!module_exists('field_group')) {
+  return;
+}
+
+$plugin = array(
+    'title' => t('Field Group'),
+    'content type' => 'field_group_field_group_content_type'
+);
+
+function field_group_field_group_content_type_content_types() {
+  $groups = field_group_read_groups();
+  foreach ($groups as $entity_type => $bundles) {
+    foreach ($bundles as $bundle => $modes) {
+      foreach ($modes as $mode => $fieldgroups) {
+        foreach ($fieldgroups as $group_name => $field_group) {
+          // Extract form field groups
+          if ($field_group->mode != 'form') {
+            $types[$entity_type . ':' . $bundle . ':' . $group_name] = array(
+                'title' => t('Field Group: @widget_label (@group_name)', array(
+                    '@widget_label' => t($field_group->label),
+                    '@group_name' => $group_name
+                )),
+                'required context' => new ctools_context_required(t(ucfirst($entity_type)), $entity_type, array('type' => $bundle)),
+                'category' => t(ucfirst($entity_type)),
+                    //A icon is missing yet
+                    //'icon' => 'icon_field_group.png',
+            );
+          }
+        }
+      }
+    }
+  }
+
+  return $types;
+}
+
+function field_group_field_group_content_type($subtype) {
+  $types = field_group_field_group_content_type_content_types();
+  if (isset($types[$subtype])) {
+    return $types[$subtype];
+  }
+}
+
+function field_group_field_group_content_type_edit_form($form, &$form_state) {
+
+  list($entity_type, $bundle, $group_name) = explode(":", $form_state['subtype_name']);
+  $entity = entity_get_info($entity_type);
+  $conf = $form_state['conf'];
+
+  $build_mode_options = array();
+  //Get the identifier of all fieldgroups, to find out wich one exists in wich bundle
+  $groups = field_group_read_groups();
+  foreach ($groups as $groups_entity_type => $groups_bundles) {
+    foreach ($groups_bundles as $groups_bundle => $groups_modes) {
+      foreach ($groups_modes as $groups_mode => $groups_fieldgroups) {
+        foreach ($groups_fieldgroups as $groups_group_name => $groups_field_group) {
+          $identifier[] = $groups_field_group->identifier;
+        }
+      }
+    }
+  }
+
+  foreach ($identifier as $key => $value) {
+    list($identifier_group_name, $identifier_entity, $identifier_bundle, $identifier_view_mode) = explode("|", $value);
+    //Add to select list when group exists in certain bundle
+    if ($identifier_group_name == $group_name && $bundle == $identifier_bundle) {
+      //Forms have no labels, so we can execute them by checking if a label exists
+      if (!empty($entity['view modes'][$identifier_view_mode])) {
+        $build_mode_options[$identifier_view_mode] = $entity['view modes'][$identifier_view_mode]['label'];
+      }
+    }
+  }
+
+  // Handle existing configurations with the deprecated 'teaser' option.default
+  // Also remove the teaser key from the form_state.
+  if (isset($conf['teaser']) || !isset($conf['build_mode'])) {
+    unset($form_state['conf']['teaser']);
+    $conf['build_mode'] = $conf['teaser'] ? 'teaser' : 'full';
+  }
+  $form['build_mode'] = array(
+      '#title' => t('Build mode'),
+      '#type' => 'select',
+      '#description' => t('Select a build mode for this node.'),
+      '#options' => $build_mode_options,
+      '#default_value' => $conf['build_mode'],
+  );
+
+  return $form;
+}
+
+/**
+ * Validate the node selection.
+ */
+function field_group_field_group_content_type_edit_form_submit($form, &$form_state) {
+  foreach (array('build_mode') as $key) {
+    $form_state['conf'][$key] = $form_state['values'][$key];
+  }
+}
+
+// The function name is <code>MODULE_NAME_CT_NAME_content_type_render
+function field_group_field_group_content_type_render($subtype, $conf, $panel_args, $context) {
+
+  // Get a shortcut to the entity.
+  list($entity_type, $bundle, $group_name) = explode(":", $subtype);
+  $view_mode = $conf['build_mode'];
+
+  // Load the entitys
+  $entitys = entity_get_info($entity_type);
+  $entity_key = $entitys['entity keys']['id'];
+  $bundle_key = $entitys['bundle keys']['bundle'];
+
+  $entity = isset($context->data) ? clone($context->data) : NULL;
+  $entity_id = $entity->$entity_key;
+
+  $elements = entity_view($entity_type, array($entity_id => $entity), $view_mode);
+  $entity_types = $entity_type . 's';
+  $element = $elements[$entity_types][$entity_id];
+
+  if (isset($element['#pre_render'])) {
+    foreach ($element['#pre_render'] as $function) {
+      if (function_exists($function)) {
+        $element = $function($element);
+      }
+    }
+    unset($element['#pre_render']);
+  }
+
+  $block = new StdClass();
+  $block->module = 'field_group_panels';
+  $block->delta = 'field_group';
+  $block->content = drupal_render($element[$group_name]);
+
+  return $block;
+}
+
+/**
+ * Returns the administrative title for a type.
+ */
+function field_group_field_group_content_type_admin_title($subtype, $conf, $context) {
+  list($entity_type, $bundle, $group_name) = explode(':', $subtype);
+  return t('"@s" @group_name', array('@s' => $context->identifier, '@group_name' => $group_name));
+}
\ No newline at end of file