 				throw new SerializationException();
 			}
 
-			presenceQueue.push( presence );
-
-			presenceQueueTimer.reset();
-			presenceQueueTimer.start();
-
+			if(queuePresences) 
+			{
+				presenceQueue.push( presence );
+	
+				presenceQueueTimer.reset();
+				presenceQueueTimer.start();
+			}
+			else 
+			{
+				var presenceEvent:PresenceEvent = new PresenceEvent();
+				presenceEvent.data = [ presence ];
+				dispatchEvent( presenceEvent );
+			}
+			
 			return presence;
 		}
 
 		protected function flushPresenceQueue(event:TimerEvent):void
 		{
-			var presenceEvent:PresenceEvent = new PresenceEvent();
-			presenceEvent.data = presenceQueue;
-			dispatchEvent( presenceEvent );
-			presenceQueue = [];
+			if(presenceQueue.length > 0) {
+				var presenceEvent:PresenceEvent = new PresenceEvent();
+				presenceEvent.data = presenceQueue;
+				dispatchEvent( presenceEvent );
+				presenceQueue = [];
+			}
 		}
 
 		/**

		}

		/**
		 * Gets the fully qualified unescaped JID of the user.
		 * A fully-qualified JID includes the resource. A bare JID does not.
		 * To get the bare JID, use the <code>bareJID</code> property of the UnescapedJID.

			}
			else
			{
				// Start the callback for this IQ if one exists
				if ( pendingIQs[iq.id] !== undefined )
				{
