parts 2 & 3 added \m/