added save! and update!