     bucketIndex = @getBucketIndexByZoomedAddress(address)
     if not cube[bucketIndex]?
       cube[bucketIndex] = @LOADING_PLACEHOLDER
+    cube[bucketIndex].requested = true
 
 
   setBucketByZoomedAddress : (address, bucketData) ->

    voxelPerBucket = 1 << @BUCKET_SIZE_P * 3
    for i in [0...voxelPerBucket]

      voxelData = (oldBucketData[i * @BYTE_OFFSET + j] for j in [0...@BYTE_OFFSET])
      voxelEmpty = _.reduce(voxelData, ((memo, v) => memo and v == 0), true)

      unless voxelEmpty
        for j in [0...@BYTE_OFFSET]
          newBucketData[i * @BYTE_OFFSET + j] = oldBucketData[i * @BYTE_OFFSET + j]

    return newBucketData


  setArbitraryBucketByZoomedAddress : ([bucket_x, bucket_y, bucket_z, zoomStep], bucketData) ->

    if not bucketIndex?
      return true

    return cube[bucketIndex]? and cube[bucketIndex].requested


  isBucketLoadedByZoomedAddress : (address) ->
