todo: implement update method