save feature now throws an error if failed