Added a Key type (interface{}) which replaces string as the map key. This allows for more generic type use