extract Storage::Adapter
Add undo integration spec