private HashSet<uint> _itemUseOnGoldenCarp = new HashSet<uint>() {
            74866 // Golden Carp
        };
		
		private HashSet<uint> _itemUseOnEmperorSalmon = new HashSet<uint>() {
            74859 // Emperor Salmon
        };
		
		private HashSet<uint> _itemUseOnKrasarangPaddlefish = new HashSet<uint>() {
            74865 // Krasarang Paddlefish
        };
		
        private HashSet<uint> _itemRequiresSleep = new HashSet<uint>() {
            61387, // Hidden Stash
            67495, // Strange Bloated Stomach
            67539, // Tiny Treasure Chest
			72201, // Plump Intestines
			87391, // Plundered Treasure (Luck of the Lotus Buff)
			88496, // Sealed Crate (MoP version)
			89613, // Cache of Treasures
			90625, // Treasures of the Vale (Daily Quest Reward)
			90716, // Good Fortune
			90840  // Marauder's Gleaming Sack of Gold (World Boss gold drop)
        };
		
		private HashSet<uint> _destroyItems = new HashSet<uint>() {
			45188, //Whitered Kelp
			45189, //Torn Sail
			45190, //Driftwood
			45191, //Empty Clam
			45194, //Tangled Fishing Line
			45195, //Empty Rum Bottle
			45196, //Tattered Cloth
			45197, //Tree Branch
			45198, //Weeds
			45199, //Old Boot
			45200, //Sickly Fish
			45201, //Rock
						45202, //Water Snail
			19221, //Darkmoon Special Reserve
			19222, //Cheap Beer
			19223, //Darkmoon Dog
			19224, //Red Hot Wings
			19225, //Deep Fried Candybar
			19299, //Fizzy Faire Drink
			19300, //Bottled Winterspring Water
			19304, //Spiced Beef Jerky
			19305, //Pickled Kodo Foot
			19306, //Crunchy Frog
			21151, //Rumsey Rum Black Label
                        28284, //Don Carlos Tequila
			44940, //Corn-Breaded Sausage
			44941, //Fresh-Squeezed Limeade
			73260, //Salty Sea Dog
			74822  //Sasparilla Sinker
		};
		
		private static WoWItem emptyGoldenCarpContainer = null;
		private static WoWItem emptyEmperorSalmonContainer = null;
		private static WoWItem emptyKrasarangPaddlefishContainer = null;
        public override void Pulse()
        {
		if (_init)
            if (StyxWoW.Me.IsActuallyInCombat
                || StyxWoW.Me.Mounted
                || StyxWoW.Me.IsDead
                || StyxWoW.Me.IsGhost
                ) {
                return;
            }
            if (InventoryCheck) { // Loot Event has Finished
				uint goldenCarpCount = 0; // Golden carp count value
				foreach (WoWItem item in ObjectManager.GetObjectsOfType<WoWItem>()) { // iterate over every item
                    if (item != null && item.BagSlot != -1) { // check if item exists and is in bag
                        if(item.Entry == (uint)87686){ // Empty Golden Carp Conatainer
							emptyGoldenCarpContainer = item;
						}
						if (_itemUseOnGoldenCarp.Contains(item.Entry)) { // stacks of 60
                            goldenCarpCount += item.StackCount;
							if (goldenCarpCount >= 60) {
                                if (emptyGoldenCarpContainer != null){
									if (emptyGoldenCarpContainer.BagSlot != -1){
										this.useItem(emptyGoldenCarpContainer);
									} else {
										emptyGoldenCarpContainer = null;
									}
								}
                            }
                        } else if (_destroyItems.Contains(item.Entry)) {
								this.destroyItem(item);
						}
                    }
                }
				
				uint emperorSalmonCount = 0; // Emperor Salmon count value
                foreach (WoWItem item in ObjectManager.GetObjectsOfType<WoWItem>()) { // iterate over every item
                    if (item != null && item.BagSlot != -1 && StyxWoW.Me.FreeNormalBagSlots >= 1) { // check if item exists and is in bag and we have space
                        if(item.Entry == (uint)87680){ // Empty Emperor Salmon Container
							emptyEmperorSalmonContainer = item;
						}
						if (_itemUseOnEmperorSalmon.Contains(item.Entry)) { // stacks of 20
                            emperorSalmonCount += item.StackCount;
							if (emperorSalmonCount >= 20) {
                                if (emptyEmperorSalmonContainer != null){
									if (emptyEmperorSalmonContainer.BagSlot != -1){
										this.useItem(emptyEmperorSalmonContainer);
									} else {
										emptyEmperorSalmonContainer = null;
									}
								}
                            }	
                        } else if (_destroyItems.Contains(item.Entry)) {
								this.destroyItem(item);
						}
                    }
                }
				
				uint krasarangPaddlefishCount = 0; // Krasarang Paddlefish count value
				foreach (WoWItem item in ObjectManager.GetObjectsOfType<WoWItem>()) { // iterate over every item
                    if (item != null && item.BagSlot != -1) { // check if item exists and is in bag
                        if(item.Entry == (uint)87685){ // Empty Krasarang Paddlefish Container
							emptyKrasarangPaddlefishContainer = item;
						}
						if (_itemUseOnKrasarangPaddlefish.Contains(item.Entry)) { // stacks of 20
                            krasarangPaddlefishCount += item.StackCount;
							if (krasarangPaddlefishCount >= 20) {
                                if (emptyKrasarangPaddlefishContainer != null){
									if (emptyKrasarangPaddlefishContainer.BagSlot != -1){
										this.useItem(emptyKrasarangPaddlefishContainer);
									} else {
										emptyKrasarangPaddlefishContainer = null;
									}
								}
                            }
                        } else if (_destroyItems.Contains(item.Entry)) {
								this.destroyItem(item);
						}
                    }
                }
				
				InventoryCheck = false;
                StyxWoW.SleepForLagDuration();
            }
        }