public function push(array $push = array()) {
        $query = array();
        if ( key_exists('query', $push) ) {
            $query = \CNCService\Core\CNCServiceArrayTrim($push, 'query');
            array_walk($query, function(&$v, $k, $path) {
                $v = $k . '=' . ($k == 'return' ? base64_encode($path) : $v);
            }, $this->_request->full_path);
        }
        $path = substr($this->_request->path, -1) == '/' ? 
                substr($this->_request->path, 0, strlen($this->_request->path) - 1) :
                $this->_request->path;
        return ($this->_config['root_dir'] ? '/' . $this->_config['root_dir'] : '') . '/' . $path . '/' . implode('/', $push) .
                ( $query ? '/?' . implode('&', $query) : '' );
    }