In the past I worked on Honu, an object-oriented language that restricted types to interfaces, which resulted in a form of programming that we called interface-oriented programming. This restriction also led to the separation of subtyping and subclassing in the language.