Product variantion

this assumes that all the attributes which will be used for varying_attributes will be of the selection type, while its not ?. Add this as a 

```python
# TODO: Add support for more attribute types
```