Infiltration refactor

Refactors stuff to make new spy abilities a bit easier to implement.
Not sure if it is worth it, but you can avoid these other changes by defining a ctor that takes a single type.