Weaving variability into domain metamodels