basic editor (add/update)