add constructors that take only required fields as parameters