docs: def save(self, *args, **kwargs):
          """
          performs actions on create:
              * ensure instance has usable password
              * set default group
              * keep in sync with email address model
          """
          created = self.pk is None
          sync_emailaddress = kwargs.pop('sync_emailaddress', True)
          # ensure usable password
          if created and self.has_usable_password() is False:
              self.set_password(self.password)
          # save
          super(Profile, self).save(*args, **kwargs)
          # add user to default group
          if created and self.groups.count() < 1:
              # TODO: make default group configurable in settings
              try:
                  default_group = Group.objects.get(name='registered')
                  self.groups.add(default_group)
              except Group.DoesNotExist:
                  pass
          # keep in sync with EmailAddress model
          if (EMAIL_CONFIRMATION and sync_emailaddress
                                 and self.email  # noqa
                                 and self.email_set.filter(email=self.email).count() < 1):  # noqa
              self.email_set.add_email(self, email=self.email)
              self.email_set.last().set_as_primary()