  util.inherits(PassThrough, Transform);
  
 diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js
-index 2259d2e..e6681ee 100644
+index 0c3fe3e..35d4e0a 100644
 --- a/lib/_stream_readable.js
 +++ b/lib/_stream_readable.js
-@@ -23,6 +23,9 @@ module.exports = Readable;
- Readable.ReadableState = ReadableState;
- 
+@@ -25,8 +25,21 @@ Readable.ReadableState = ReadableState;
  var EE = require('events').EventEmitter;
-+if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
-+  return emitter.listeners(type).length;
-+};
  var Stream = require('stream');
  var util = require('util');
++if (!util.isUndefined) {
++  var utilIs = require('core-util-is');
++  for (var f in utilIs) {
++    util[f] = utilIs[f];
++  }
++}
  var StringDecoder;
+-var debug = util.debuglog('stream');
++var debug;
++if (util.debuglog)
++  debug = util.debuglog('stream');
++else try {
++  debug = require('debuglog')('stream');
++} catch (er) {
++  debug = function() {};
++}
+ 
+ util.inherits(Readable, Stream);
+ 
 diff --git a/lib/_stream_transform.js b/lib/_stream_transform.js
-index e925b4b..f08b05e 100644
+index b1f9fcc..b0caf57 100644
 --- a/lib/_stream_transform.js
 +++ b/lib/_stream_transform.js
-@@ -64,7 +64,7 @@
+@@ -64,8 +64,14 @@
  
  module.exports = Transform;
  
 -var Duplex = require('_stream_duplex');
 +var Duplex = require('./_stream_duplex');
  var util = require('util');
++if (!util.isUndefined) {
++  var utilIs = require('core-util-is');
++  for (var f in utilIs) {
++    util[f] = utilIs[f];
++  }
++}
  util.inherits(Transform, Duplex);
  
+ 
 diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js
-index a26f711..56ca47d 100644
+index ba2e920..f49288b 100644
 --- a/lib/_stream_writable.js
 +++ b/lib/_stream_writable.js
-@@ -109,7 +109,7 @@ function WritableState(options, stream) {
+@@ -27,6 +27,12 @@ module.exports = Writable;
+ Writable.WritableState = WritableState;
+ 
+ var util = require('util');
++if (!util.isUndefined) {
++  var utilIs = require('core-util-is');
++  for (var f in utilIs) {
++    util[f] = utilIs[f];
++  }
++}
+ var Stream = require('stream');
+ 
+ util.inherits(Writable, Stream);
+@@ -119,7 +125,7 @@ function WritableState(options, stream) {
  function Writable(options) {
    // Writable ctor is applied to Duplexes, though they're not
    // instanceof Writable, they're instanceof Readable.

     return new Writable(options);
 
   this._writableState = new WritableState(options, this);

diff --git a/float.patch b/float.patch
index 0ad71a1..e69de29 100644
--- a/float.patch
+++ b/float.patch
@@ -1,68 +0,0 @@
-diff --git a/lib/_stream_duplex.js b/lib/_stream_duplex.js
-index c5a741c..a2e0d8e 100644
---- a/lib/_stream_duplex.js
-+++ b/lib/_stream_duplex.js
-@@ -26,8 +26,8 @@
- 
- module.exports = Duplex;
- var util = require('util');
--var Readable = require('_stream_readable');
--var Writable = require('_stream_writable');
-+var Readable = require('./_stream_readable');
-+var Writable = require('./_stream_writable');
- 
- util.inherits(Duplex, Readable);
- 
-diff --git a/lib/_stream_passthrough.js b/lib/_stream_passthrough.js
-index a5e9864..330c247 100644
---- a/lib/_stream_passthrough.js
-+++ b/lib/_stream_passthrough.js
-@@ -25,7 +25,7 @@
- 
- module.exports = PassThrough;
- 
--var Transform = require('_stream_transform');
-+var Transform = require('./_stream_transform');
- var util = require('util');
- util.inherits(PassThrough, Transform);
- 
-diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js
-index 2259d2e..e6681ee 100644
---- a/lib/_stream_readable.js
-+++ b/lib/_stream_readable.js
-@@ -23,6 +23,9 @@ module.exports = Readable;
- Readable.ReadableState = ReadableState;
- 
- var EE = require('events').EventEmitter;
-+if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
-+  return emitter.listeners(type).length;
-+};
- var Stream = require('stream');
- var util = require('util');
- var StringDecoder;
-diff --git a/lib/_stream_transform.js b/lib/_stream_transform.js
-index e925b4b..f08b05e 100644
---- a/lib/_stream_transform.js
-+++ b/lib/_stream_transform.js
-@@ -64,7 +64,7 @@
- 
- module.exports = Transform;
- 
--var Duplex = require('_stream_duplex');
-+var Duplex = require('./_stream_duplex');
- var util = require('util');
- util.inherits(Transform, Duplex);
- 
-diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js
-index a26f711..56ca47d 100644
---- a/lib/_stream_writable.js
-+++ b/lib/_stream_writable.js
-@@ -109,7 +109,7 @@ function WritableState(options, stream) {
- function Writable(options) {
-   // Writable ctor is applied to Duplexes, though they're not
-   // instanceof Writable, they're instanceof Readable.
--  if (!(this instanceof Writable) && !(this instanceof Stream.Duplex))
-+  if (!(this instanceof Writable) && !(this instanceof require('./_stream_duplex')))
-     return new Writable(options);
- 
-   this._writableState = new WritableState(options, this);
diff --git a/lib/_stream_duplex.js b/lib/_stream_duplex.js
index c5a741c..a2e0d8e 100644
--- a/lib/_stream_duplex.js
