add terminate()