updated with further constructor