You could do all this with WCDDL, just wanted to let you know. The right modules should help you get the features you seem to want.