DEC now works through traits properly (this was a major upheaval of all of the typing in DEC related stuff, types.hpp is now a huge collection of traits