public function rename($name) {

		if(false === is_string($name)) {
			return trigger_error(sprintf('Argument 1 passed to %s() must be of the type string, "%s" given', __METHOD__, gettype($name)), E_USER_ERROR);
		}

		if(false !== $this -> file -> getExists()) {
			
			if(rename($this -> file -> getBasepath(), $this -> file -> getPath() . $name)) {

				$info = (object) pathinfo($this -> file -> getPath() . $name);

				$this -> file -> setName($info -> filename);
				$this -> file -> setBasename($info -> basename);
				$this -> file -> setBasepath($this -> file -> getPath() . $this -> file -> getBasename());
				
				if(true === isset($info -> extension)) {
					$this -> file -> setExtension($info -> extension);
				}

				$this -> refresh();
			}
		}

		return $this;
	}