why do you need this constructor?