pdateModel :: AppController -> IO AppController
updateModel app = do
  let p = appProgression app
      m = appModel app
      w = appWidth app
      h = appHeight app
      x = appX app
      y = appY app
      z = appZoom app
      i = appMaxIter app
  putStr $ "updating fractal [x:" ++ show x ++ " y:" ++ show y ++ " z:" ++ show z ++ " i:" ++ show i ++ "] ..."
  newModel <- regen p m w h x y z i
  putStrLn "done!"
  return app { appModel = newModel }

updateModel :: AppController -> IO AppController
updateModel app = do
  let p = appProgression app
      m = appModel app
      w = appWidth app
      h = appHeight app
      x = appX app
      y = appY app
      z = appZoom app
      i = appMaxIter app
  putStr $ "updating fractal [x:" ++ show x ++ " y:" ++ show y ++ " z:" ++ show z ++ " i:" ++ show i ++ "] ..."
  newModel <- regen p m w h x y z i
  putStrLn "done!"
  return app { appModel = newModel }
updateModel app = do
  let p = appProgression app
      m = appModel app
      w = appWidth app
      h = appHeight app
      x = appX app
      y = appY app
      z = appZoom app
      i = appMaxIter app
  putStr $ "updating fractal [x:" ++ show x ++ " y:" ++ show y ++ " z:" ++ show z ++ " i:" ++ show i ++ "] ..."
  newModel <- regen p m w h x y z i
  putStrLn "done!"
  return app { appModel = newModel }