     @running = true
     @go()
   thingsCreated: -> @idBase
-  currentThings: -> @things.length
+  currentThings: -> @thingCount
   countThing: (type) ->
     count = 0
-    count++ for t in @things when t instanceof type
+    @visitThings(
+      (t) -> count++ if t instanceof type
+      false, true
+    )
     count
   plantCount: -> @countThing Plant
   animalCount: -> @countThing Animal

    m.push t2
    m
  clean: ->
    for k, v in @others
      @universe.geoPool.push v if v
      delete @others[k]
    if @marges

  babies: ->
    cradles = @makeCradles()
    orchards = @makeCradles()
    @visitThings(
      (t) =>
        points = @pointsNear t.x, t.y, t.radius * 2
        @removeCradles cradles, points unless t instanceof Plant
        @removeCradles orchards, points unless t instanceof Stone
      false, true
    )
    @visitThings (t) ->
      if t instanceof Organism
        c = if t instanceof Plant then orchards else cradles
        t.reproduce c
  findCradles: (allCradles, newCradles) ->
    grep newCradles, (pt) -> allCradles[pt[0]][pt[1]]
  removeCradles: (allCradles, points) ->
