Mostly updated 2 (b)