constructor should update self