https://medium.com/the-art-of-software-development/conceptual-differences-in-naming-between-imperative-and-functional-programming-6f58df20626c