implement restart