@Override
	public void run() {

		// once a set amount of time goes by save our spot for next time
		millis = currentTimeMillis();

		// check each world
		for (World world : plugin.getCcWorlds()) {

			// check each LivingEntity in the world
			for (LivingEntity entity : world.getLivingEntities()) {

				// check if entity is a monster first
				if (!(entity instanceof Monster)) {
					continue;
				}

				// don't remove this mob if it's already set to be removed
				if (plugin.getEntityUUIDs().contains(entity.getUniqueId())) {
					continue;
				}

				// get entity location
				Location location = entity.getLocation();

				// make sure chunk is loaded at that location
				if (!location.getChunk().isLoaded()) {
					continue;
				}
				
				me.ryanhamshire.GriefPrevention.Claim gpclaim = plugin.getCcClaim().getGPClaim(location);

				// check if location is in a claim
				if (plugin.getCcClaim().check(entity.getLocation())) {
					Long claimid = gpclaim.getID();
					
					// TODO: keep track of location, claimid, monsters flag
					// check location, then claimid, then monsters flag

					// check if claim has monsters flag
					if (!plugin.getCcFlags().getMonsters(claimid)) {

						// store entity id so we dont try removing it twice
						UUID id = entity.getUniqueId();
						plugin.addEntityUUID(id);

						// remove entity
						entity.remove();

						// store entity id so we dont try removing it twice
						plugin.removeEntityUUID(id);
					}
				}

				// Keep going?
				long testMilli = currentTimeMillis();
				if(testMilli - millis > 100) {
					break;
				}
			}
		}
	}