https://medium.com/@murataslan1/advanced-c-programming-an-engineers-practical-guide-to-real-world-implementation-5e5fe5a4fd9b