https://medium.com/@hohanga/introduction-to-typescript-interfaces-object-literals-and-function-types-3eafa3709336