add restore, more test needed