should update self also