Added mark() and restore()