diff --git a/www/DirectoryEntry.js b/www/DirectoryEntry.js
index 9e55adf..053ef9a 100644
--- a/www/DirectoryEntry.js
+++ b/www/DirectoryEntry.js
@@ -33,10 +33,10 @@
  * {boolean} isDirectory always true (readonly)
  * {DOMString} name of the directory, excluding the path leading to it (readonly)
  * {DOMString} fullPath the absolute full path to the directory (readonly)
- * TODO: implement this!!! {FileSystem} filesystem on which the directory resides (readonly)
+ * {FileSystem} filesystem on which the directory resides (readonly)
  */
-var DirectoryEntry = function(name, fullPath) {
-     DirectoryEntry.__super__.constructor.call(this, false, true, name, fullPath);
+var DirectoryEntry = function(name, fullPath, fileSystem) {
+     DirectoryEntry.__super__.constructor.call(this, false, true, name, fullPath, fileSystem);
 };
 
 utils.extend(DirectoryEntry, Entry);
@@ -58,8 +58,9 @@
  */
 DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) {
     argscheck.checkArgs('sOFF', 'DirectoryEntry.getDirectory', arguments);
+    var fs = this.filesystem;
     var win = successCallback && function(result) {
-        var entry = new DirectoryEntry(result.name, result.fullPath);
+        var entry = new DirectoryEntry(result.name, result.fullPath, fs);
         successCallback(entry);
     };
     var fail = errorCallback && function(code) {
@@ -92,9 +93,10 @@
  */
 DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) {
     argscheck.checkArgs('sOFF', 'DirectoryEntry.getFile', arguments);
+    var fs = this.filesystem;
     var win = successCallback && function(result) {
         var FileEntry = require('./FileEntry');
-        var entry = new FileEntry(result.name, result.fullPath);
+        var entry = new FileEntry(result.name, result.fullPath, fs);
         successCallback(entry);
     };
     var fail = errorCallback && function(code) {
diff --git a/www/Entry.js b/www/Entry.js
index 0e1bc02..09afb6f 100644
--- a/www/Entry.js
+++ b/www/Entry.js
@@ -37,6 +37,9 @@
  * @param fullPath
  *            {DOMString} the absolute full path to the file or directory
  *            (readonly)
+ * @param fileSystem
+ *            {FileSystem} the filesystem on which this entry resides
+ *            (readonly)
  */
 function Entry(isFile, isDirectory, name, fullPath, fileSystem) {
     this.isFile = !!isFile;
@@ -107,7 +110,7 @@
             if (entry) {
                 if (successCallback) {
                     // create appropriate Entry object
-                    var result = (entry.isDirectory) ? new (require('./DirectoryEntry'))(entry.name, entry.fullPath) : new (require('org.apache.cordova.file.FileEntry'))(entry.name, entry.fullPath);
+                    var result = (entry.isDirectory) ? new (require('./DirectoryEntry'))(entry.name, entry.fullPath, entry.filesystem) : new (require('org.apache.cordova.file.FileEntry'))(entry.name, entry.fullPath, entry.filesystem);
                     successCallback(result);
                 }
             }
@@ -148,7 +151,7 @@
             if (entry) {
                 if (successCallback) {
                     // create appropriate Entry object
-                    var result = (entry.isDirectory) ? new (require('./DirectoryEntry'))(entry.name, entry.fullPath) : new (require('org.apache.cordova.file.FileEntry'))(entry.name, entry.fullPath);
+                    var result = (entry.isDirectory) ? new (require('./DirectoryEntry'))(entry.name, entry.fullPath, entry.filesystem) : new (require('org.apache.cordova.file.FileEntry'))(entry.name, entry.fullPath, entry.filesystem);
                     successCallback(result);
                 }
             }
@@ -206,9 +209,10 @@
  */
 Entry.prototype.getParent = function(successCallback, errorCallback) {
     argscheck.checkArgs('FF', 'Entry.getParent', arguments);
+    var fs = this.filesystem;
     var win = successCallback && function(result) {
         var DirectoryEntry = require('./DirectoryEntry');
-        var entry = new DirectoryEntry(result.name, result.fullPath);
+        var entry = new DirectoryEntry(result.name, result.fullPath, fs);
         successCallback(entry);
     };
     var fail = errorCallback && function(code) {
diff --git a/www/FileEntry.js b/www/FileEntry.js
index 79064ac..dc9352d 100644
--- a/www/FileEntry.js
+++ b/www/FileEntry.js
@@ -35,8 +35,8 @@
  * {DOMString} fullPath the absolute full path to the file (readonly)
  * {FileSystem} filesystem on which the file resides (readonly)
  */
-var FileEntry = function(name, fullPath) {
-     FileEntry.__super__.constructor.apply(this, [true, false, name, fullPath]);
+var FileEntry = function(name, fullPath, fileSystem) {
+     FileEntry.__super__.constructor.apply(this, [true, false, name, fullPath, fileSystem]);
 };
 
 utils.extend(FileEntry, Entry);
diff --git a/www/FileSystem.js b/www/FileSystem.js
index 030365f..76e3f89 100644
--- a/www/FileSystem.js
+++ b/www/FileSystem.js
@@ -31,7 +31,7 @@
 var FileSystem = function(name, root) {
     this.name = name || null;
     if (root) {
-        this.root = new DirectoryEntry(root.name, root.fullPath);
+        this.root = new DirectoryEntry(root.name, root.fullPath, this);
     }
 };
 
