update procedural