[wip] Protocol injection mapping

Map protocol conforming classes to the protocol, so you can have a super clean separation between your protocol-based API and the different implementations for it.