use pragma once
add restart interface