       started_at: nil,
       task: nil
     }
-    Logger.info("Init \"#{state.init.id}\" finished properly. Did run for #{inspect running_for_seconds} seconds. Restart in #{state.timeout} seconds.", state: state)
+    Logger.info("Init \"#{state.init.id}\" finished properly. Did run for #{inspect running_for_seconds} seconds. #{inspect timeout} secs")
     {:noreply, state}
   end
   def handle_info({:EXIT, _from, :normal}, state) do

    {:stop, :normal, state}
  end
  def handle_info(any, state) do
    Logger.warn("#{inspect self()} Got info: #{inspect any}")
    {:noreply, state}
  end
end

  end

  defp handle_wait_run(%{started_at: started_at, timeout: timeout } = state) do
    if state.timer do # if inside timer, do not retrigger. Wait for real timer.
      running_for_seconds = case started_at do
        nil -> 0
        _other -> -Timex.Duration.diff(started_at, nil, :seconds)
      end
      timer = Process.send_after(self(), {:restart}, timeout * 1000)

      # Timeout is for next run
      timeout = max(1, min((timeout - running_for_seconds) * 2, @max_timeout)) # 2h

      state = %{
        state |
        timeout: timeout,
        timer: timer,
        started_at: nil,
        task: nil
      }
      Logger.info("Restart init #{state.init.id} in #{state.timeout} seconds.", state: state)
      state
    else
      state
    end
  end

  def handle_info({:DOWN, _ref, :process, _pid, _type}, %{started_at: started_at} = state) when is_nil(started_at) do
