private Node growNode(int width, int height) {

			Node grown = null;

			int minWidth = powerOfTwo(this.width + width);
			int minHeight = powerOfTwo(this.height + height);

			boolean growRight = this.width <= this.height;
			boolean growDown = !growRight;

			if (width > this.width && height > this.height) {
				growDown = true;
				growRight = true;
			}

			if (growDown) {
				this.height = minHeight;
			}
			if (growRight) {
				this.width = minWidth;
			}

			if ((grown = findNode(root, width, height, 0)) != null) {
				grown = splitNode(grown, width, height);
			} else {
				grown = null;
			}

			return grown;
		}