Interface abstraction pretty much done