Enhance cvariation to handle parameters, and also parse variations recursively
When doing cvariation recursively, make sure to pass the variations along with it