 				if not @cube or not @cube[@bucketIndexByAddress(currentAddress)]
 					@extendByBucketAddress(currentAddress)
 
-				while workingQueue.length and counter++ < 10
+				while workingQueue.length and counter++ < 30
 
 					currentAddress = workingQueue.shift()
+
+					continue if visitedList.indexOf(V3.toString(currentAddress)) >= 0
 
 					unless @cube[@bucketIndexByAddress(currentAddress)]
 						@extendByBucketAddress(currentAddress)

					tempWorkingQueue = []

					neighborAddress[0] = currentAddress[0] - 2
					neighborAddress[1] = currentAddress[1] - 2
					neighborAddress[2] = currentAddress[2] - 2

					while neighborAddress[0] <= currentAddress[0]
						neighborAddress[0]++
						while neighborAddress[1] <= currentAddress[1]
							neighborAddress[1]++
							while neighborAddress[2] <= currentAddress[2]
								neighborAddress[2]++


			
			pullingQueue : []
			
			pullBucket : (address) ->

				console.log "pull", V3.toString(address)

				@cube[@bucketIndexByAddress(address)] = loadingState

				vertex = V3.clone(address)
				vertex[0] = vertex[0] << 6
				vertex[1] = vertex[1] << 6
				vertex[2] = vertex[2] << 6
