studies from FP101x Introduction to Functional Programming - on edX - https://www.edx.org/node/2126