Patches/interfaces as identifiers

Adding interfaces implemented by a controller as identifiers. This helps to attach events to controllers sharing an interface. Right now we can only do so with abstract classes.