Use ActiveModel::Dirty, introduce #save
Connect on init and log the event