diff --git a/modules/ggroup/src/Form/SubgroupFormStep1.php b/modules/ggroup/src/Form/SubgroupFormStep1.php
index 1bfa331..62b5d79 100644
--- a/modules/ggroup/src/Form/SubgroupFormStep1.php
+++ b/modules/ggroup/src/Form/SubgroupFormStep1.php
@@ -7,6 +7,7 @@ use Drupal\user\PrivateTempStoreFactory;
 use Drupal\Core\Url;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Provides a creating a group without it being saved yet.
@@ -21,23 +22,31 @@ class SubgroupFormStep1 extends GroupForm {
   protected $privateTempStore;
 
   /**
-   * Constructs a SubgroupFormStep1 object.
+   * Constructs a SubgroupFormStep2 object.
    *
    * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
    *   The entity manager.
    * @param \Drupal\user\PrivateTempStoreFactory $temp_store_factory
    *   The factory for the temp store object.
    */
-  public function __construct(EntityManagerInterface $entity_manager) {
+  public function __construct(EntityManagerInterface $entity_manager, PrivateTempStoreFactory $temp_store_factory) {
     parent::__construct($entity_manager);
-    // @todo use proper dependency injection for this.
-    $temp_store_factory = \Drupal::getContainer()->get('user.private_tempstore');
     $this->privateTempStore = $temp_store_factory->get('ggroup_add_temp');
   }
 
   /**
    * {@inheritdoc}
    */
+  public static function create(ContainerInterface $container) {
+    return new static(,
+      $container->get('entity.manager'),
+      $container->get('user.private_tempstore')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   protected function actions(array $form, FormStateInterface $form_state) {
     $actions['submit'] = [
       '#type' => 'submit',
diff --git a/modules/ggroup/src/Form/SubgroupFormStep2.php b/modules/ggroup/src/Form/SubgroupFormStep2.php
index 63b9360..1cd2eb6 100644
--- a/modules/ggroup/src/Form/SubgroupFormStep2.php
+++ b/modules/ggroup/src/Form/SubgroupFormStep2.php
@@ -24,13 +24,13 @@ class SubgroupFormStep2 extends GroupContentForm {
   /**
    * Constructs a SubgroupFormStep2 object.
    *
-   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
-   *   The entity manager.
    * @param \Drupal\user\PrivateTempStoreFactory $temp_store_factory
    *   The factory for the temp store object.
+   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
+   *   The entity manager.
    */
-  public function __construct(EntityManagerInterface $entity_manager, PrivateTempStoreFactory $temp_store_factory) {
-    parent::__construct($entity_manager);
+  public function __construct(PrivateTempStoreFactory $temp_store_factory, EntityManagerInterface $entity_manager) {
+    parent::__construct($temp_store_factory, $entity_manager);
     $this->privateTempStore = $temp_store_factory->get('ggroup_add_temp');
   }
 
@@ -39,8 +39,8 @@ class SubgroupFormStep2 extends GroupContentForm {
    */
   public static function create(ContainerInterface $container) {
     return new static(
-      $container->get('entity.manager'),
-      $container->get('user.private_tempstore')
+      $container->get('user.private_tempstore'),
+      $container->get('entity.manager')
     );
   }
 
diff --git a/modules/gnode/gnode.module b/modules/gnode/gnode.module
index d184243..d3a6020 100644
--- a/modules/gnode/gnode.module
+++ b/modules/gnode/gnode.module
@@ -72,6 +72,17 @@ function gnode_node_access(NodeInterface $node, $op, AccountInterface $account)
     $groups[$group->id()] = $group;
   }
 
+  // Get all supergroups for group contents if subgroup module is enabled.
+  $moduleHandler = \Drupal::service('module_handler');
+  if ($moduleHandler->moduleExists('ggroup')){
+    /** @var \Drupal\ggroup\GroupHierarchyManager $group_hierarchy_manager */
+    $group_hierarchy_manager = \Drupal::service('ggroup.group_hierarchy_manager');
+    foreach($groups as $group) {
+      $supergroups = $group_hierarchy_manager->getGroupSupergroups($group);
+      $groups = array_merge($groups, $supergroups);
+    }
+  }
+
   // From this point on you need group to allow you to perform the requested
   // operation. If you are not granted access for a node belonging to a group,
   // you should be denied access instead.
