- generic update