Lots of splitting of files to prepare for the latest effort towards genericity.