def sort(self, *columns, **options):
        sorts = self.meta.setdefault('sort', [])
        for column in columns:
            if isinstance(column, Column):
                identifier = column.id
            elif isinstance(column, utils.basestring):
                descending = column.startswith('-') or options.get('descending', False)
                identifier = self.api.columns[column.lstrip('-')].id
            else:
                raise ValueError("Can only sort on columns or column strings. Received: {}".format(column))
            if descending:
                sign = '-'
            else:
                sign = ''
            sorts.append(sign + identifier)
        self.raw['sort'] = ",".join(sorts)
        return self