updated constructor