Just adding <D> to stuff

everything still works -phew-
reorganized thoughts; implement interface