part 3 assignment impl