       #console.log "####    T:#{t}, rle:#{rle}"
       if self.rle2pattern.hasOwnProperty rle
         #console.log "####      found! #{rle}"
-        result.x = dx
-        result.y = dy
-        result.t = t
+        result.pos = [dx, dy, t]
         result.rle = rle
         result.found=true
         return false

      [dx1, dy1, tfm] = Cells._find_normalizing_rotation dx, dy
      pattern1 = Cells.transform pattern, tfm, false #no need to normalize
      result = @_classifyNormalizedPattern pattern1, time, dx1, dy1, period
      result.transform = tfm
    else
      #it is not a spaceship - no way to find a normal rotation. Check all 4 rotations.
      for tfm in Cells._rotations
        pattern1 = Cells.transform pattern, tfm, false
        result = @_classifyNormalizedPattern pattern1, time, 0, 0, period
        if result.found
          result.transform = tfm
          break
    #reverse-transform position
    [[result.x0, result.y0]] = Cells.transform [[result.x, result.y]], inverseTfm(result.transform)
    return result

  _classifyNormalizedPattern: (pattern, time, dx, dy, period) ->

#simulate patern until it decomposes into several simple patterns
# Return list of collision products
finishCollision = (rule, field, time) ->
  #console.log "#### Collision RLE: #{normalizedRle field}"
  growthLimit = field.length*3 + 8  #when to try to separate pattern

  while true
    field = evaluateCellList rule, field, mod2(time)
