Major changes and refactoring in migration. Add some variant specified methds to product.