Partial implementation of save! and cancel!