from todo: part a.1 & a.4