diff --git a/subuser.install b/subuser.install
index 99aed0b..b5a801c 100644
--- a/subuser.install
+++ b/subuser.install
@@ -7,6 +7,36 @@
  */
 
 /**
+ * Implementation of hook_enable().
+ */
+function subuser_enable() {
+  // Check if our field is not already created.
+  if (!field_info_field('field_subuser_limit')) {
+    $field = array(
+        'field_name' => 'field_subuser_limit',
+        'type' => 'text',
+    );
+    field_create_field($field);
+
+    // Create the instance on the bundle.
+    $instance = array(
+        'field_name' => 'field_subuser_limit',
+        'entity_type' => 'user',
+        'label' => 'Subuser Limit',
+        'bundle' => 'user',
+        'settings' => array(
+          // Here you inform either or not you want this field showing up on the registration form.
+          'user_register_form' => 1,
+        ),
+        'widget' => array(
+          'type' => 'textfield',
+        ),
+    );
+    field_create_instance($instance);
+  }
+}
+
+/**
  * Implements hook_uninstall().
  */
 function subuser_uninstall() {
@@ -19,3 +49,33 @@ function subuser_uninstall() {
  */
 function subuser_update_7201() {
 }
+
+/**
+ * Adds field_subuser_limit field instance.
+ */
+function subuser_update_7202() {
+  // Check if our field is not already created.
+  if (!field_info_field('field_subuser_limit')) {
+    $field = array(
+        'field_name' => 'field_subuser_limit',
+        'type' => 'text',
+    );
+    field_create_field($field);
+
+    // Create the instance on the bundle.
+    $instance = array(
+        'field_name' => 'field_subuser_limit',
+        'entity_type' => 'user',
+        'label' => 'Subuser Limit',
+        'bundle' => 'user',
+        'settings' => array(
+          // Here you inform either or not you want this field showing up on the registration form.
+          'user_register_form' => 1,
+        ),
+        'widget' => array(
+          'type' => 'textfield',
+        ),
+    );
+    field_create_instance($instance);
+  }
+}
diff --git a/subuser.module b/subuser.module
index 71abc7a..5a4e139 100644
--- a/subuser.module
+++ b/subuser.module
@@ -11,6 +11,10 @@
  */
 function subuser_permission() {
   $permissions = array(
+    'administer subusers' => array(
+      'title' => t('Administer subusers'),
+      'description' => t('Allows a user to administer subusers.'),
+    ),
     'view subusers' => array(
       'title' => t('view subusers'),
       'description' => t('Allows a user to view subusers.'),
@@ -204,8 +208,19 @@ function subuser_access_create_callback($string, $account = NULL) {
     $account = $user;
   }
 
-  if (subuser_access_create($account)) {
-    $static = &drupal_static('user_access');
+  $user_loaded = user_load($account->uid);
+  $total_subusers = count(subuser_load_all($account));
+  $subuser_limit = field_get_items('user', $user_loaded, 'field_subuser_limit');
+  $max_subusers = '';
+
+  if (isset($subuser_limit[0]['value'])) {
+    $max_subusers = $subuser_limit[0]['value'];
+  }
+
+  drupal_alter('subuser_limit', $max_subusers, $user);
+
+  if (subuser_access_create($account) && ($max_subusers >= $total_subusers || $max_subusers == '')) {
+    $static = & drupal_static('user_access');
     $static[$account->uid][$string] = TRUE;
   }
 
@@ -213,6 +228,15 @@ function subuser_access_create_callback($string, $account = NULL) {
 }
 
 /**
+ * Implements hook_form_FORM_ID_alter(): user_profile_form
+ */
+function subuser_form_user_profile_form_alter(&$form, &$form_state) {
+  global $user;
+  // Remove the limit user setting from users that doesnt have the administer subusers permissions
+  $form['field_subusers_limit']['#access'] = user_access('administer subusers', $user);
+}
+
+/**
  * Implements hook_form_FORM_ID_alter(): user_register_form.
  */
 function subuser_form_user_register_form_alter(&$form, &$form_state) {
