4.1: updated pseudocode while coding
4.1: initial code
4.1: initial code, redux
4.1: refactor