public function paginate($perPage = null, $columns = array('*'))
    {

        $columnsPassed = (func_num_args() > 1) && ($columns !== null);

        $columns = $columnsPassed ? $columns : $this->getQueryColumns();

        $query = $this->buildQuery($columns);

        if ($columnsPassed) {
            return $query->paginate($perPage, $columns);
        }

        // addJoinOnce adds queryColumns again...
        return $query->paginate($perPage, $this->getQueryColumns());

    }