Adds caching to inverseFor and implements look for inverses on the other side

Brainfart, it's way easier to create the map when its first needed