diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c203ab3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,16 @@
+# Junk that could exist anywhere:
+.DS_Store
+*.swp
+*.tmp
+
+# Project files that should not be in the repo
+.project
+.settings/
+.settings.xml
+.settings.xml.old
+.*.gz
+
+# A handy place to put stuff that git should ignore:
+/ignore/
+/build/
+/node_modules/
diff --git a/debian/changelog b/debian/changelog
index f8bf267..a32d3d7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+node-dryice (0.4.10+git20140508.836fa75-1) UNRELEASED; urgency=medium
+
+  * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Fri, 02 Aug 2019 23:11:02 +0000
+
 node-dryice (0.4.10-3) unstable; urgency=medium
 
   * Team upload.
diff --git a/debian/patches/0000-use_uglifyjs_2.patch b/debian/patches/0000-use_uglifyjs_2.patch
index 010f0a8..3d2d58f 100644
--- a/debian/patches/0000-use_uglifyjs_2.patch
+++ b/debian/patches/0000-use_uglifyjs_2.patch
@@ -7,9 +7,11 @@ Forwarded: yes, https://github.com/mozilla/dryice/issues/34
  lib/dryice/index.js |   31 ++++++++++---------------------
  1 file changed, 10 insertions(+), 21 deletions(-)
 
---- a/lib/dryice/index.js
-+++ b/lib/dryice/index.js
-@@ -828,7 +828,7 @@
+Index: node-dryice/lib/dryice/index.js
+===================================================================
+--- node-dryice.orig/lib/dryice/index.js
++++ node-dryice/lib/dryice/index.js
+@@ -835,7 +835,7 @@ function findRequires(module) {
    var code = fs.readFileSync(module.fullname).toString();
    var ast;
    try {
@@ -18,7 +20,7 @@ Forwarded: yes, https://github.com/mozilla/dryice/issues/34
    }
    catch (ex) {
      console.error('- Failed to compile ' + module.path + ': ' + ex);
-@@ -882,10 +882,8 @@
+@@ -902,10 +902,8 @@ function findRequires(module) {
      }
    };
  
@@ -31,7 +33,7 @@ Forwarded: yes, https://github.com/mozilla/dryice/issues/34
  
    return reply;
  }
-@@ -999,27 +997,18 @@
+@@ -1019,27 +1017,18 @@ copy.filter.uglifyjs = function(input) {
    }
  
    var opt = copy.filter.uglifyjs.options;
diff --git a/lib/dryice/index.js b/lib/dryice/index.js
index b391558..736ea18 100644
--- a/lib/dryice/index.js
+++ b/lib/dryice/index.js
@@ -28,7 +28,7 @@ if (!fs.existsSync) {
 function copy(obj) {
   var filters = copy.filterFactory(obj.filter);
   var source = copy.sourceFactory(obj.source, filters);
-  var dest = copy.destFactory(obj.dest, filters);
+  var dest = copy.destFactory(obj.dest, filters, obj.filenameFilter);
   dest.processSource(source);
 }
 
@@ -369,7 +369,7 @@ copy.CommonJsSource.prototype = Object.create(copy.Source.prototype);
 Object.defineProperty(copy.CommonJsSource.prototype, 'get', {
   get: function() {
     this._require.forEach(function(moduleName) {
-      this._project.require(moduleName);
+      this._project.require(moduleName, '<build file>');
     }, this);
     return this._project.getCurrentModules().map(function(location) {
       return new copy.FileSource(location, this._filters);
@@ -400,7 +400,7 @@ copy.filterFactory = function(filter) {
 /**
  * Select the correct implementation of Destination for the given dest property
  */
-copy.destFactory = function(dest, filters) {
+copy.destFactory = function(dest, filters, filenameFilter) {
   if (dest == null) {
     throw new Error('Missing dest');
   }
@@ -415,7 +415,7 @@ copy.destFactory = function(dest, filters) {
 
   if (typeof dest === 'string') {
     if (copy.isDirectory(dest)) {
-      return new copy.DirectoryDestination(dest, filters);
+      return new copy.DirectoryDestination(dest, filters, filenameFilter);
     }
     else {
       return new copy.FileDestination(dest, filters);
@@ -507,9 +507,10 @@ copy.FileDestination.prototype.processSource = function(source) {
  * A Destination that copies the sources to new files in an alternate directory
  * structure.
  */
-copy.DirectoryDestination = function(dirname, filters) {
+copy.DirectoryDestination = function(dirname, filters, filenameFilter) {
   this.name = dirname;
   this._filters = filters;
+  this._filenameFilter = filenameFilter;
 };
 
 copy.DirectoryDestination.prototype = Object.create(copy.Destination.prototype);
@@ -521,12 +522,18 @@ copy.DirectoryDestination.prototype.processSource = function(source) {
   }
   else if (data.isSource) {
     var destfile = path.join(this.name, data.location.path);
+    if (this._filenameFilter != null) {
+      destfile = this._filenameFilter(destfile);
+    }
     var output = this._runFilters(data.get);
     copy._writeToFile(destfile, output, data.encoding);
   }
   else if (Array.isArray(data)) {
     data.forEach(function(s) {
       var destfile = path.join(this.name, s.location.path);
+      if (this._filenameFilter != null) {
+        destfile = this._filenameFilter(destfile);
+      }
       var output = this._runFilters(s.get);
       copy._writeToFile(destfile, output, s.encoding);
     }, this);
@@ -851,9 +858,22 @@ function findRequires(module) {
         else if (args[0][0] === 'string' && args[1][0] == 'array') {
           params = args[1][1];
         }
+        // Check if it's a Simplified CommonJS Wrapper.  A module is only
+        // treated as a CJS module if it doesn't contain a dependency array and
+        // the definition function contains at least one parameter.
+        // http://requirejs.org/docs/api.html#cjsmodule
+        else if ((args[0][0] === 'function' && args[0][2].length) ||
+                 (args[1][0] === 'function' && args[1][2].length &&
+                  args[0][0] === 'string')) {
+          // By definition there are no dependencies, so no more work is
+          // necessary.
+          return;
+        }
         else {
+          /*
           console.log('- ' + module.path + ' has define(...) ' +
-              'with non-array parameter. Ignoring requirement.');
+              'with unrecognized parameter. Ignoring requirement.');
+          */
           return;
         }
 
@@ -890,7 +910,7 @@ function findRequires(module) {
   return reply;
 }
 
-CommonJsProject.prototype.require = function(moduleName) {
+CommonJsProject.prototype.require = function(moduleName, parentModuleName) {
   var module = this.currentModules[moduleName];
   if (module) {
     return module;
@@ -932,7 +952,7 @@ CommonJsProject.prototype.require = function(moduleName) {
   }, this);
 
   if (!module) {
-    console.error('Failed to find module: ' + moduleName);
+    console.error('Failed to find module: ' + moduleName + ' from ' + parentModuleName);
     return;
   }
 
@@ -941,9 +961,9 @@ CommonJsProject.prototype.require = function(moduleName) {
 
   if (!module.isText) {
     // require() all this modules requirements
-    findRequires(module).forEach(function(moduleName) {
-      module.deps[moduleName] = 1;
-      this.require(moduleName);
+    findRequires(module).forEach(function(innerModuleName) {
+      module.deps[innerModuleName] = 1;
+      this.require(innerModuleName, moduleName);
     }, this);
   }
 };
@@ -1063,10 +1083,10 @@ copy.filter.addDefines = function(input, source) {
 
   var module = source.isLocation ? source.path : source;
 
-  input = input.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
-  input = '"' + input.replace(/\n/g, '\\n" +\n  "') + '"';
+  input = input.replace(/\\/g, "\\\\").replace(/'/g, '\\\'');
+  input = '\'' + input.replace(/\n/g, '\\n\' +\n  \'') + '\'';
 
-  return 'define("text!' + module + '", [], ' + input + ');\n\n';
+  return 'define(\'text!' + module + '\', [], ' + input + ');\n\n';
 };
 copy.filter.addDefines.onRead = true;
 
diff --git a/package.json b/package.json
index 03512d6..9a2876d 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
   "name": "dryice",
   "description": "A CommonJS/RequireJS packaging tool for browser scripts",
   "keywords": [ "build", "commonjs", "requirejs" ],
-  "version": "0.4.10",
+  "version": "0.4.11",
   "homepage": "https://github.com/joewalker/dryice",
   "author": "Joe Walker <joe@getahead.org>",
   "contributors": [ ],