//internal update method
		UpdateFrequency IUpdate.Update(UpdateState state)
		{
			if (disposed)
				return UpdateFrequency.Terminate;

			if (systemData == null)
				return UpdateFrequency.FullUpdate60hz;

			//draw proc only makes it's callback if system isn't null
			drawProc.system = null;

			if (enabled)
			{
				//system logic is performed as a thread task
				threadWaitCallback.WaitForCompletion();

				if (!pauseUpdatesWhileCulled ||
					this.drawProc.AnyChildDrawnLastFrame)
				{
					//particle system is enabled, and isn't offscreen
					BufferSpawnData();


					//start the task
					threadWaitCallback = state.Application.ThreadPool.QueueTask(threadAction, null);

					//draw proc only makes it's callback if system isn't null
					drawProc.system = this;
				}
			}

			//asks the application to call Draw() on the drawProc when the frame begins
			//as currnetly in update()
			state.PreFrameDraw(drawProc);

			return systemLogic.UpdateFrequency;
		}