Index: includes/class-wp-filesystem-ssh2.php
===================================================================
--- includes/class-wp-filesystem-ssh2.php	(revision 18575)
+++ includes/class-wp-filesystem-ssh2.php	(working copy)
@@ -206,6 +206,13 @@
 		return $this->run_command(sprintf('chmod -R %o %s', $mode, escapeshellarg($file)), true);
 	}
 
+	/**
+	 * Change the ownership of a file / folder.
+	 * @param string $file Path to the file.
+	 * @param mixed $owner A user name or number.
+	 * @param bool $recursive (optional) If set True changes file owner recursivly. Defaults to False.
+	 * @return bool Returns true on success or false on failure.
+	 */
 	function chown($file, $owner, $recursive = false ) {
 		if ( ! $this->exists($file) )
 			return false;
Index: includes/class-wp-filesystem-ftpsockets.php
===================================================================
--- includes/class-wp-filesystem-ftpsockets.php	(revision 18575)
+++ includes/class-wp-filesystem-ftpsockets.php	(working copy)
@@ -174,10 +174,6 @@
 		return $this->ftp->chmod($file, $mode);
 	}
 
-	function chown($file, $owner, $recursive = false ) {
-		return false;
-	}
-
 	function owner($file) {
 		$dir = $this->dirlist($file);
 		return $dir[$file]['owner'];
Index: includes/class-wp-filesystem-ftpext.php
===================================================================
--- includes/class-wp-filesystem-ftpext.php	(revision 18575)
+++ includes/class-wp-filesystem-ftpext.php	(working copy)
@@ -168,9 +168,6 @@
 			return (bool)@ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file));
 		return (bool)@ftp_chmod($this->link, $mode, $file);
 	}
-	function chown($file, $owner, $recursive = false ) {
-		return false;
-	}
 	function owner($file) {
 		$dir = $this->dirlist($file);
 		return $dir[$file]['owner'];
Index: includes/class-wp-filesystem-direct.php
===================================================================
--- includes/class-wp-filesystem-direct.php	(revision 18575)
+++ includes/class-wp-filesystem-direct.php	(working copy)
@@ -15,7 +15,7 @@
  * @uses WP_Filesystem_Base Extends class
  */
 class WP_Filesystem_Direct extends WP_Filesystem_Base {
-	var $errors = null;
+
 	/**
 	 * constructor
 	 *
@@ -26,14 +26,6 @@
 		$this->errors = new WP_Error();
 	}
 	/**
-	 * connect filesystem.
-	 *
-	 * @return bool Returns true on success or false on failure (always true for WP_Filesystem_Direct).
-	 */
-	function connect() {
-		return true;
-	}
-	/**
 	 * Reads entire file into a string
 	 *
 	 * @param string $file Name of the file to read.
@@ -161,7 +153,7 @@
 	 * Gets file owner
 	 *
 	 * @param string $file Path to the file.
-	 * @return string Username of the user.
+	 * @return string|bool Username of the user or false on error.
 	 */
 	function owner($file) {
 		$owneruid = @fileowner($file);
Index: includes/class-wp-filesystem-base.php
===================================================================
--- includes/class-wp-filesystem-base.php	(revision 18575)
+++ includes/class-wp-filesystem-base.php	(working copy)
@@ -39,6 +39,12 @@
 	var $method = '';
 
 	/**
+	 * Constructor
+	 */
+	function __construct() {
+	}
+	
+	/**
 	 * Returns the path on the remote filesystem of ABSPATH
 	 *
 	 * @since 2.7
@@ -327,6 +333,287 @@
 	function is_binary( $text ) {
 		return (bool) preg_match('|[^\x20-\x7E]|', $text); //chr(32)..chr(127)
 	}
+
+	/**
+	 * Change the ownership of a file / folder.
+	 * Default behavior is to do nothing, override this in your subclass, if desired
+	 * @param string $file Path to the file.
+	 * @param mixed $owner A user name or number.
+	 * @param bool $recursive (optional) If set True changes file owner recursivly. Defaults to False.
+	 * @return bool Returns true on success or false on failure.
+	 */
+	function chown($file, $owner, $recursive = false ) {
+		return false;
+	}
+
+	/**
+	 * connect filesystem.
+	 *
+	 * @return bool Returns true on success or false on failure (always true for WP_Filesystem_Direct).
+	 */
+	function connect() {
+		return true;
+	}
+
+	/**
+	 * Reads entire file into a string
+	 *
+	 * @param string $file Name of the file to read.
+	 * @return string|bool The function returns the read data or false on failure.
+	 */
+	function get_contents($file) {
+		return false;
+	}
+
+	/**
+	 * Reads entire file into an array
+	 *
+	 * @param string $file Path to the file.
+	 * @return array|bool the file contents in an array or false on failure.
+	 */
+	function get_contents_array($file) {
+		return false;
+	}
+
+	/**
+	 * Write a string to a file
+	 *
+	 * @param string $file Remote path to the file where to write the data.
+	 * @param string $contents The data to write.
+	 * @param int $mode (optional) The file permissions as octal number, usually 0644.
+	 * @return bool False upon failure.
+	 */
+	function put_contents($file, $contents, $mode = false ) {
+		return false;
+	}
+
+	/**
+	 * Gets the current working directory
+	 *
+	 * @return string|bool the current working directory on success, or false on failure.
+	 */
+	function cwd() {
+		return false;
+	}
+
+	/**
+	 * Change directory
+	 *
+	 * @param string $dir The new current directory.
+	 * @return bool Returns true on success or false on failure.
+	 */
+	function chdir($dir) {
+		return false;
+	}
+
+	/**
+	 * Changes file group
+	 *
+	 * @param string $file Path to the file.
+	 * @param mixed $group A group name or number.
+	 * @param bool $recursive (optional) If set True changes file group recursivly. Defaults to False.
+	 * @return bool Returns true on success or false on failure.
+	 */
+	function chgrp($file, $group, $recursive = false) {
+		return false;
+	}
+	
+	/**
+	 * Changes filesystem permissions
+	 *
+	 * @param string $file Path to the file.
+	 * @param int $mode (optional) The permissions as octal number, usually 0644 for files, 0755 for dirs.
+	 * @param bool $recursive (optional) If set True changes file group recursivly. Defaults to False.
+	 * @return bool Returns true on success or false on failure.
+	 */
+	function chmod($file, $mode = false, $recursive = false) {
+		return false;
+	}
+	
+	/**
+	 * Gets file owner
+	 *
+	 * @param string $file Path to the file.
+	 * @return string|bool Username of the user or false on error.
+	 */
+	function owner($file) {
+		return false;
+	}
+
+	/**
+	 * Gets file's group
+	 * 
+	 * @param string $file
+	 * @return string|bool
+	 */
+	function group($file) {
+		return false;
+	}
+
+	/**
+	 * Copy a file
+	 * 
+	 * @param string $source
+	 * @param string $destination
+	 * @param bool $overwrite
+	 * @param int $mode
+	 * @return bool
+	 */
+	function copy($source, $destination, $overwrite = false, $mode = false) {
+		return false;
+	}
+
+	/**
+	 * Move a file
+	 * 
+	 * @param string $source
+	 * @param string $destination
+	 * @param bool $overwrite
+	 * @return bool
+	 */
+	function move($source, $destination, $overwrite = false) {
+		return false;
+	}
+
+	/**
+	 * Delete a file / directory
+	 * 
+	 * @param string $file
+	 * @param bool $recursive
+	 * @param type $type (f = file, other values = directory)
+	 * @return bool
+	 */
+	function delete($file, $recursive = false, $type = false) {
+		return false;
+	}
+
+	/**
+	 * Check if a file exists
+	 * 
+	 * @param string $file
+	 * @return bool
+	 */
+	function exists($file) {
+		return false;
+	}
+
+	/**
+	 * Check if a file is a regular file
+	 * 
+	 * @param string $file
+	 * @return bool
+	 */
+	function is_file($file) {
+		return false;
+	}
+
+	/**
+	 * Check if a path is a directory
+	 * 
+	 * @param string $path
+	 * @return bool
+	 */
+	function is_dir($path) {
+		return false;
+	}
+
+	/**
+	 * Check if a file is readable
+	 * 
+	 * @param string $file
+	 * @return bool
+	 */
+	function is_readable($file) {
+		return false;
+	}
+
+	/**
+	 * Check if a file is writable
+	 * 
+	 * @param string $file
+	 * @return bool
+	 */
+	function is_writable($file) {
+		return false;
+	}
+
+	/**
+	 * Get a file's last access time
+	 * 
+	 * @param string $file
+	 * @return int|bool
+	 */
+	function atime($file) {
+		return false;
+	}
+
+	/**
+	 * Get a file's last modified time
+	 * 
+	 * @param string $file
+	 * @return int|bool
+	 */
+	function mtime($file) {
+		return false;
+	}
+
+	/**
+	 * Get a file's size
+	 * 
+	 * @param string $file
+	 * @return int|bool
+	 */
+	function size($file) {
+		return false;
+	}
+
+	/**
+	 * Update a file's access time and modified time
+	 * 
+	 * @param string $file
+	 * @param int $time
+	 * @param int $atime
+	 * @return bool
+	 */
+	function touch($file, $time = 0, $atime = 0) {
+		return false;
+	}
+
+	/**
+	 * Create a directory
+	 * 
+	 * @param string $path
+	 * @param string|int|false $chmod
+	 * @param string|int|false $chown
+	 * @param string|int|false $chgrp
+	 * @return bool
+	 */
+	function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
+		return false;
+	}
+
+	/**
+	 * Delete a directory
+	 * 
+	 * @param string$path
+	 * @param bool $recursive
+	 * @return bool
+	 */
+	function rmdir($path, $recursive = false) {
+		return false;
+	}
+
+	/**
+	 * Get a recursive directory listing
+	 * 
+	 * @param string $path
+	 * @param bool $include_hidden
+	 * @param bool $recursive
+	 * @return array|bool
+	 */
+	function dirlist($path, $include_hidden = true, $recursive = false) {
+		return false;
+	}
 }
 
-?>
+?>
\ No newline at end of file
