Currently in D you would be forced to create a vtable struct manually. But if we had something like signatures you could do this: ```d struct Foo { //... } struct Bar { InputRange input; } void doIt() { Bar bar; Foo* foo = new Foo; bar.input = foo; } ``` Classes are not the only way to do OOP :)