Source: https://www.acs.uwinnipeg.ca/rmcfadyen/CreativeCommons/Java with BlueJ Part 1 Sept 2016.pdf