 class Demo_ScreenSaverView: ScreenSaverView {
   
   private var population = Population.init(Recipe.jellyFish, numberOfPopulation: 1000, fieldSize: Vector2(1000, 1000), initialArea: Vector2.Rect.init(x: 400, y: 400, width: 200, height: 200))
+  private var isRunning = false {
+    didSet {
+      guard isRunning != oldValue else {
+        return
+      }
+      if isRunning {
+        step()
+      }
+    }
+  }
+  
+  private var frameCount = 0
+  private let fps = 2
+  private let defaultFPS = 30
   
   required init?(coder: NSCoder) {
     super.init(coder: coder)

    }
  }
  
  override func animateOneFrame() {
    population.step(1)
    setNeedsDisplay(bounds)
  }
  
  override func hasConfigureSheet() -> Bool {

  
  override func startAnimation() {
    super.startAnimation()
    isRunning = true
  }
  
  func step() {
    guard isRunning else {
      return
    }
    DispatchQueue.global().async {
      self.population.step(10)
      self.step()
    }
  }
  
  override func stopAnimation() {
    super.stopAnimation()
    isRunning = false
  }
  
  override func draw(_ rect: NSRect) {
