Not that it's a bad thing anyway, but is there a specific reason to define the Components as an interface first? There is only every one implementation as far as I can figure, nothing platform specific ever, so the interface will always map to the implementation one to one