https://medium.com/@borepstein/using-maps-hashes-and-empty-interfaces-in-go-lang-to-flexibly-store-and-access-data-25e2aa3576