 		}
 		
 		/**
+		 * Half the Entity's width.
+		 */
+		public function get halfWidth():Number { return width / 2; }
+		
+		/**
+		 * Half the Entity's height.
+		 */
+		public function get halfHeight():Number { return height / 2; }
+		
+		/**
+		 * The center x position of the Entity's hitbox.
+		 */
+		public function get centerX():Number { return x - originX + width / 2; }
+		
+		/**
+		 * The center y position of the Entity's hitbox.
+		 */
+		public function get centerY():Number { return y - originY + height / 2; }
+		
+		/**
 		 * The rendering layer of this Entity. Higher layers are rendered first.
 		 */
 		public function get layer():int { return _layer; }

		}
		
		/**
		 * Updates the Entity's graphic. If you override this for
		 * update logic, remember to call super.update() if you're
		 * using a Graphic type that animates (eg. Spritemap).
		 */
		override public function update():void 
		{

			this.height = height;
			this.originX = originX;
			this.originY = originY;
		}
		
		/**
		 * Sets the Entity's hitbox to match that of the provided object.
		 * @param	o		The object defining the hitbox (eg. an Image or Rectangle).
		 */
		public function setHitboxTo(o:Object):void
		{
			if (o is Image || o is Rectangle) setHitbox(o.width, o.height, -o.x, -o.y);
			else
			{
				if (o.hasOwnProperty("width")) width = o.width;
				if (o.hasOwnProperty("height")) height = o.height;
				if (o.hasOwnProperty("originX") && !(o is Graphic)) originX = o.originX;
				else if (o.hasOwnProperty("x")) originX = -o.x;
				if (o.hasOwnProperty("originY") && !(o is Graphic)) originX = o.originY;
				else if (o.hasOwnProperty("y")) originX = -o.y;
			}
		}
		
		/**
		 * Sets the origin of the Entity.
		 * @param	x		X origin.
		 * @param	y		Y origin.
		 */
		public function setOrigin(x:int = 0, y:int = 0):void
		{
			originX = x;
			originY = y;
		}
		
		/**
