add specs; add before_save/delete callback to track changes