 														   destination	: BitmapData,
 														   time			: Number) : void
 		{
-			if (_update)
+			//FIXME : find why updates are shifted
+			if (1)//_update)
 			{
 				_distance	< _minDistance	&& (_distance = _minDistance);
 				_distance	> _maxDistance	&& (_distance = _maxDistance);

		
		public function bindDefaultControls(dispatcher : IEventDispatcher) : void
		{
			dispatcher.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			dispatcher.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
			dispatcher.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
			dispatcher.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
		}
		
		public function unbindDefaultControls(dispatcher : IEventDispatcher) : void
		{
			dispatcher.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			dispatcher.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
			dispatcher.removeEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
			dispatcher.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
		}

			}
		}
		
		private function mouseWheelHandler(e : MouseEvent) : void
		{
			_distance	-=	e.delta;
			_update		=	true;
		}
		
		protected function mouseMoveHandler(e : MouseEvent) : void
		{
			// compute position
			if (e.buttonDown)
			{
				_theta	+= (_mousePosition.x - e.stageX) / 100;
				_phi	+= (_mousePosition.y - e.stageY) / 100;
