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()