public function remove($key, $column_names=null, $consistency_level=null) {

        if (($column_names === null || count($column_names) == 1)
            && ! $this->has_counters)
        {
            $cp = new ColumnPath();
            $cp->column_family = $this->column_family;

            if ($column_names !== null) {
                if ($this->is_super)
                    $cp->super_column = $this->pack_name($column_names[0], true);
                else
                    $cp->column = $this->pack_name($column_names[0], false);
            }
            return $this->_remove_single($key, $cp, $consistency_level);
        } else {
            $deletion = new Deletion();
            if ($column_names !== null)
                $deletion->predicate = $this->create_slice_predicate($column_names, null);

            return $this->_remove_multi($key, $deletion, $consistency_level);
        }
    }