diff --git a/src/core/Group.js b/src/core/Group.js
index 79da39f47..19e1f09fc 100644
--- a/src/core/Group.js
+++ b/src/core/Group.js
@@ -13,7 +13,7 @@
 * In addition, Groups provides support for fast pooling and object recycling.
 *
 * Groups are also display objects and can be nested as children within other Groups.
-* 
+*
 * @class Phaser.Group
 * @extends PIXI.DisplayObjectContainer
 * @param {Phaser.Game} game - A reference to the currently running game.
@@ -107,13 +107,13 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody
     this.ignoreDestroy = false;
 
     /**
-    * A Group is that has `pendingDestroy` set to `true` is flagged to have its destroy method 
+    * A Group is that has `pendingDestroy` set to `true` is flagged to have its destroy method
     * called on the next logic update.
     * You can set it directly to flag the Group to be destroyed on its next update.
-    * 
-    * This is extremely useful if you wish to destroy a Group from within one of its own callbacks 
+    *
+    * This is extremely useful if you wish to destroy a Group from within one of its own callbacks
     * or a callback of one of its children.
-    * 
+    *
     * @property {boolean} pendingDestroy
     */
     this.pendingDestroy = false;
@@ -164,7 +164,7 @@ Phaser.Group = function (game, parent, name, addToStage, enableBody, physicsBody
 
     /**
     * If this Group contains Arcade Physics Sprites you can set a custom sort direction via this property.
-    * 
+    *
     * It should be set to one of the Phaser.Physics.Arcade sort direction constants: 
     * 
     * Phaser.Physics.Arcade.SORT_NONE
@@ -1975,6 +1975,63 @@ Phaser.Group.prototype.getBottom = function () {
 
 };
 
+/**
+ * Get the closest child to given Object/Point/Sprite/Image
+ *
+ * @method Phaser.Group#getClosestTo
+ * @return {any} The child closest to given Object/Point/Sprite/Image
+ */
+Phaser.Group.prototype.getClosestTo = function(object) {
+
+    if (this.children.length !== 0) {
+        var distance = Number.MAX_VALUE,
+            tempDistance = 0,
+            returnee;
+        this.forEachAlive(function(e) {
+
+            tempDistance = Math.abs(Phaser.Point.distance(object, e));
+
+            if (tempDistance < distance) {
+                distance = tempDistance;
+                returnee = e;
+            }
+        });
+
+        if (returnee) {
+            return returnee
+        };
+    }
+
+};
+
+/**
+ * Get the farthest child from given Object/Point/Sprite/Image
+ *
+ * @method Phaser.Group#getFarthestFrom
+ * @return {any} The child farthest from given Object/Point/Sprite/Image
+ */
+Phaser.Group.prototype.getFarthestFrom = function(object) {
+
+    if (this.children.length !== 0) {
+        var distance = 0,
+            tempDistance = 0,
+            returnee;
+        this.forEachAlive(function(e) {
+
+            tempDistance = Math.abs(Phaser.Point.distance(object, e));
+
+            if (tempDistance > distance) {
+                distance = tempDistance;
+                returnee = e;
+            }
+        });
+        if (returnee) {
+            return returnee
+        };
+    }
+
+};
+
 /**
 * Get the number of living children in this group.
 *