docs: def save(self, *args, **kwargs):
          """
          Custom save method does the following things:
              * converts geometry collections of just 1 item to that item (eg: a collection of 1 Point becomes a Point)
              * intercepts changes to status and fires node_status_changed signal
              * set default status
          """
          # geometry collection check
          if isinstance(self.geometry, GeometryCollection) and 0 < len(self.geometry) < 2:
              self.geometry = self.geometry[0]
          # if no status specified
          if not self.status and not self.status_id:
              try:
                  self.status = Status.objects.filter(is_default=True)[0]
              except IndexError:
                  pass
          super(Node, self).save(*args, **kwargs)
          # if status of a node changes
          if (self.status and self._current_status and self.status.id != self._current_status) or\
             (self.status_id and self._current_status and self.status_id != self._current_status):
              # send django signal
              node_status_changed.send(
                  sender=self.__class__,
                  instance=self,
                  old_status=Status.objects.get(pk=self._current_status),
                  new_status=self.status
              )
          # update _current_status
          self._current_status = self.status_id