If I use interfaces instead of classes is there a way to have new return the underlying interface that I want it to? interface A { } class B : A {} auto a = new B; // should return cast(A)(new B); Maybe it's not such a big deal though? (I can't think of any case where a being of type B will hurt since it is always implicitly castable to type A.