add mainloop