Further refactoring, placing variants module in their own home and changing code to deal