function groupBy($column) {
        if($column === null || $column === '') {
            return $this;
        }
        
        $new = array();
        foreach($this->data as $key => $val) {
            if(\is_callable($column)) {
                $key = $column($val, $key);
            } elseif(\is_array($val)) {
                $key = $val[$column];
            } elseif(\is_object($val)) {
                $key = $val->$column;
            }
            
            $new[$key][] = $val;
        }
        
        return (new self($new));
    }