DDS

Check diff or commit list for details. I removed the `std::transform` of the filename but I'll put it back in if you really want. If not it'll get fixed to ignore case again when I/someone gets around to adding a case-insensitive version of `ends_with`.