separate init and update