add terminable interface