/*!
 * Backbone.Overview 
 *
 * Copyright (c) 2014, JC Brand <jc@opkode.com>
 * Licensed under the Mozilla Public License (MPL) 
 */
(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        define(["underscore", "backbone"], factory);
   } else {
      // RequireJS isn't being used.
      // Assume underscore and backbone are loaded in <script> tags
        factory(_ || root._, Backbone || root.Backbone);
   }
}(this, function (_, Backbone) {
    "use strict";
    var Overview = Backbone.Overview = function (options) {
        /* An Overview is a View that contains and keeps track of sub-views.
         * Kind of like what a Collection is to a Model.
         */
        this.views = {};
        this.keys = _.partial(_.keys, this.views);
        this.getAll = _.partial(_.identity, this.views);

        this.get = function (id) {
            return this.views[id];
        }.bind(this);

        this.xget = function (id) {
            /* Exclusive get. Returns all instances except the given id. */
            return _.filter(this.views, function (view, vid) {
                return vid !== id;
            });
        }.bind(this);

        this.add = function (id, view) {
            this.views[id] = view;
            return view;
        }.bind(this);

        this.remove = function (id) {
            if (typeof id === "undefined") {
                new Backbone.View().remove.apply(this);
            }
            var view = this.views[id];
            if (view) {
                delete this.views[id];
                view.remove();
                return view;
            }
        }.bind(this);

        this.removeAll = function () {
            _.each(_.keys(this.views), this.remove);
        }.bind(this);
        Backbone.View.apply(this, Array.prototype.slice.apply(arguments));
    };

    var methods = ['forEach', 'each', 'map', 'collect', 'reduce', 'foldl',
        'inject', 'reduceRight', 'foldr', 'find', 'detect', 'filter', 'select',
        'reject', 'every', 'all', 'some', 'any', 'include', 'contains', 'invoke',
        'max', 'min', 'toArray', 'size', 'first', 'head', 'take', 'initial', 'rest',
        'tail', 'drop', 'last', 'without', 'difference', 'indexOf', 'shuffle',
        'lastIndexOf', 'isEmpty', 'chain', 'sample'];
    // Mix in each Underscore method as a proxy to `Overview#view`.
    _.each(methods, function(method) {
        Overview.prototype[method] = function() {
            var args = Array.prototype.slice.call(arguments);
            args.unshift(this.views);
            return _[method].apply(_, args);
        };
    });
    _.extend(Overview.prototype, Backbone.View.prototype);
    Overview.extend = Backbone.View.extend;
    return Backbone.Overview;
}));

@@ -693,24 +693,49 @@
          */%0A
+        var that = this;%0A
         this
@@ -912,18 +912,18 @@
 eturn th
-is
+at
 .views%5Bi
@@ -931,35 +931,24 @@
 %5D;%0A        %7D
-.bind(this)
 ;%0A%0A        t
@@ -1080,18 +1080,18 @@
 ilter(th
-is
+at
 .views, 
@@ -1169,35 +1169,24 @@
 );%0A        %7D
-.bind(this)
 ;%0A%0A        t
@@ -1227,26 +1227,26 @@
           th
-is
+at
 .views%5Bid%5D =
@@ -1282,35 +1282,24 @@
 w;%0A        %7D
-.bind(this)
 ;%0A%0A        t
@@ -1423,18 +1423,18 @@
 apply(th
-is
+at
 );%0A     
@@ -1467,18 +1467,18 @@
 iew = th
-is
+at
 .views%5Bi
@@ -1530,18 +1530,18 @@
 elete th
-is
+at
 .views%5Bi
@@ -1627,27 +1627,16 @@
        %7D
-.bind(this)
 ;%0A%0A     
@@ -1697,18 +1697,18 @@
 .keys(th
-is
+at
 .views),
@@ -1710,18 +1710,18 @@
 ews), th
-is
+at
 .remove)
@@ -1734,20 +1734,34 @@
     
-%7D.bind(this)
+    return that;%0A        %7D
 ;%0A  
@@ -1864,121 +1864,117 @@
  = %5B
-'forEach', 'each', 'map', 'collect', 'reduce', 'foldl',%0A        'inject', 'reduceRight', 'foldr', 'find', 'detect
+%0A        'all', 'any', 'chain', 'collect', 'contains', 'detect',%0A        'difference', 'drop', 'each', 'every
 ', '
@@ -1987,14 +1987,12 @@
 ', '
-select
+find
 ',%0A 
@@ -2003,296 +2003,343 @@
    '
-reject', 'every', 'all', 'some', 'any', 'include', 'contains', 'invoke',%0A        'max
+first', 'foldl', 'foldr', 'forEach', 'head', 'include',%0A        'indexOf', 'initial', 'inject', 'invoke', 'isEmpty',%0A        'last', 'lastIndexOf
 ', 'm
-in
+ap
 ', '
-toArray', 'size', 'first', 'head', 'take', 'initial', 'rest',%0A        'tail', 'drop', 'last', 'without', 'difference', 'indexOf', 'shuffle',%0A        'lastIndexOf', 'isEmpty', 'chain', 'sample'
+max', 'min', 'reduce',%0A        'reduceRight', 'reject', 'rest', 'sample', 'select',%0A        'shuffle', 'size', 'some', 'sortBy', 'tail', 'take',%0A        'toArray', 'without',%0A    
 %5D;%0A 

Use that instead of bind. Return view when calling `removeAll`