Adding some tests...
Add PinInterface as submodule
Merge remote-tracking branch 'origin/wip'
Use generated type name as generic parameter