with constructor