functions part 1 and 2
constructor